Ho bisogno di aiuto con un progetto corretto.
Ho una classe chiamata BufferManager
. Il metodo push()
di questa classe legge i dati da un'origine e li invia ripetutamente a un buffer finché non rimangono più dati nell'origine.
Ci sono anche thread di consumo che leggono i dati da questo buffer, non appena arrivano nuovi dati.
C'è un'opzione per ordinare i dati prima che arrivi al buffer. Quello che faccio adesso è che BufferManager
, invece di spingere i dati nel buffer, lo spinge verso un altro buffer di "ordinamento" e avvia un thread di ordinamento. SorterManager
class legge i dati, li ordina in file e push()
es i dati ordinati nel buffer.
Ci sarà un collo di bottiglia (io uso l'unione di ordinamento con i file) ma questo è qualcosa che non posso evitare.
Questo è un cattivo design, perché sia BufferManager
che SorterManager
spingono i dati in un buffer (che i consumatori leggono da). Penso che solo BufferManager
dovrebbe farlo.
Come posso progettarlo?