In Java gibt es java.util.concurrent.SynchronousQueue
, eine Warteschlange ohne Speicherkapazität. Threads, die versuchen Werte zu setzen / zu bekommen, werden immer blockiert, bis ein anderer Thread versucht, einen Wert zu erhalten bzw. zu setzen.
Was sind gute Möglichkeiten, das Gleiche in Python zu tun? I.e. Ich möchte einen Weg, um Werte aus einem Satz von einem oder mehreren Threads an einen anderen Satz von einem oder mehreren Threads übergeben, ohne dass ein Wert jemals zu einem Thread in einer der beiden Gruppen gehört.
Pythons queue.Queue
lässt nicht zu, dass die Länge 0
ist. Wenn Sie einen nicht positiven Wert für die maximale Kapazität angeben, wird eine unbegrenzte Warteschlange erstellt.
Ich habe das Gefühl, das folgende könnte eine Sackgasse sein, aber würde so etwas wie die folgende funktionieren?
%Vor%Eine reguläre Warteschlange unterstützt die Hälfte von dem, was Sie wollen (der Getter wartet auf den Putter), also können wir versuchen, die Umkehrung zu implementieren, indem wir den Putt blockieren, bis ein get gestartet wurde.
Tags und Links python java multithreading concurrency