In Java, c'è java.util.concurrent.SynchronousQueue
, una coda senza capacità di archiviazione. I thread che cercano di mettere/ottenere il valore si bloccano sempre fino a quando un altro thread tenta di ottenere/inserire un valore rispettivamente.Ottimo modo per creare una coda di blocco a lunghezza zero in Python
Quali sono i modi migliori per fare lo stesso in Python? Cioè Voglio un modo per passare i valori da un set di uno o più thread a un altro set di uno o più thread senza che un valore sia mai "appartenente" a un thread in uno dei due gruppi.
di Python queue.Queue
non consente la lunghezza di essere 0
, specificando un valore non positivo per la capacità massima crea una coda infinita.
Non credo che modifica il comportamento se hai fatto queste code lunghezza illimitata, ma potrebbe essere più efficace: ciò significherebbe il 'ready_to_get.put()' non potrebbe mai bloccare (ma va bene come il 'queue.get()' bloccherà ancora) e allo stesso modo 'queue.put()' non bloccherebbe ma non lo raggiungerebbe a meno che qualcosa stava cercando di "ottenere". – Duncan
Volevo provare a rendere conto della situazione in cui ci sono due getter in coda, ma solo uno scrittore disponibile. Ma penso che tu abbia ragione, siamo coperti dall'ottenere comunque. –