per una coda multiple-produttore/single-consumer/FIFO, si può facilmente fare uno LockFree usando SLIST o un banale stack LIFO Lock. Quello che fai è avere un secondo stack "privato" per il consumatore (che può essere fatto anche come SLIST per semplicità o qualsiasi altro modello di stack che scegli). stack privato Ogni volta che il LIFO privato viene espulso, esegui una risciacquo piuttosto che scendi dallo SLIST concorrente condiviso (afferrando l'intera catena SLIST) e poi fai scorrere l'elenco Flush in ordine spingendo gli oggetti nello stack privato
Funziona per singolo produttore/consumatore singolo e per produttore multiplo/consumatore singolo.
Tuttavia, non funziona per i casi di più produttori/consumatori multipli.
Una risposta molto interessante per quanto riguarda la regolazione delle prestazioni utilizzando algoritmi e alternative bloccabili: http://stackoverflow.com/questions/853316/is-critical-section-always-faster/853510#853510. – mghie