Mentre cercavo di capire come implementare una coda Producer / Consumer in Qt, mi sono imbattuto in diverse risposte SO, blog e siti che collegavano questo sito:
Ho capito il senso di questo sito, ma di solito le persone si riferiscono all'esempio di codice che si trova nel blog di riferimento:
Threading without the headache
Il blog ha un piccolo esempio di codice allegato, il cui nucleo è pubblicato da KornP in questa risposta SO:
Qt moveToThread () vs chiama il nuovo thread quando usiamo ogni
Quindi, se osservi più da vicino, abbiamo il seguente comportamento:
- Il produttore P produce un oggetto, mentre il consumatore C attende che gli eventi appaiano nel suo ciclo degli eventi.
- P inoltra i dati prodotti attraverso un segnale e torna al ciclo di eventi inattivo.
- C riceve il segnale nel suo ciclo degli eventi e consuma i dati.
- C emette un segnale sul thread del produttore e torna al ciclo di loop inattivo.
- Ricomincia da 1.
In altre parole: mentre P sta producendo, C non fa nulla e mentre C sta producendo, P non fa nulla.
Che senso ha avere un produttore e un consumatore come questo in due thread diversi?
Un singolo thread non sarebbe esattamente uguale?