Se si esamina la documentazione che descrive l'utilizzo di variabili di condizione (cv), si vedrà che ad es. in PThreads e C++ non è necessario mantenere il mutex di un cv per chiamare la notifica su questo cv. Mentre, ad es. in Java e Python, è necessario bloccare il mutex per fare la stessa cosa.Pattern di utilizzo delle variabili di condizione in C/C++ e in altre lingue
C'è qualche motivo profondo per cui le cose sono implementate in questo modo (sono circa l'ultimo caso), dato che un'implementazione di un linguaggio come Java alla fine utilizza alcuni strumenti di thread nativi?
Probabilmente non è implementato solo su pthreads .. ma questa è solo un'ipotesi. Sento che questa domanda potrebbe migliorare (o anche * qualsiasi *) risposte su http://cs.stackexchange.com/ ... –
Ovviamente la JVM potrebbe implementarlo in questo modo, ma fa un errore comune che ho visto molte, molte persone fanno in C++ molto meno probabilmente ad un costo ragionevolmente basso (è necessario tenere un blocco un po 'più lungo ma il gioco è fatto) – Voo
@Voo L'errore è che il mutex non viene tenuto durante la modifica dei dati da cui dipende la condizione? – vehsakul