Ho avuto un processo di lavoro che stava eseguendo un sacco di IO per leggere e scrivere file temporanei.
Ora voglio (necessario) ridurre la quantità di esecuzioni di I / O.
Quindi voglio creare una sorta di buffer circolare che verrà riempito con i dati di un file di testo nel primo thread.
Il thread del consumatore (in lettura) recupererà i dati da questo buffer.
Il problema è che potrebbero esserci più utenti che devono leggere dallo stesso buffer.
Per l'implementazione del buffer preferisco non utilizzare alcun wrapper esistente (array semplice, dove ho appena "giocato" con gli indici è sufficiente).
Inoltre non voglio creare un buffer separato per ogni lettore. E naturalmente voglio evitare qualsiasi deadlock e blocco non necessario.
Aggiorna
In questo momento sto usando un buffer circolare (un array e 2 indici)
La domanda è come implementare tale buffer a cui possono accedere più utenti in cui ogni consumatore può leggere da esso in modo interdipendente da altri consumatori (un cliente può leggere più velocemente dell'altro).
AGGIORNAMENTO IMPORTANTE
Il primo thread non sa (e non dovrebbe sapere) dei suoi consumatori !!!
Dovrebbe scrivere i dati in un buffer, quando i dati terminano dovrebbe sollevare un flag.