Ho visto riferimento all'utilizzo di buffer ad anello e accesso controllato ai puntatori di posizione per eliminare o ridurre la necessità di blocchi. Tuttavia, non elimina la necessità di attese, e dovrebbe funzionare solo allora un buffer circolare ha uno scrittore e un lettore. Nel tuo caso avresti bisogno di almeno due buffer.
Il meccanismo, a quanto ho capito, è:
A seconda del tempo di attesa utilizzato, è possibile aggiungere la latenza per i nuovi elementi in una coda vuota o masterizzare molti cicli della CPU nel ciclo di attesa. L'ordine di aggiornamento del puntatore e la rigorosa separazione dell'accesso in scrittura è fondamentale per il corretto funzionamento. Lo scrittore è autorizzato a scrivere la voce del ring buffer prima di incrementare il puntatore per renderlo disponibile al lettore.