Diciamo che voglio programmare un web crawler in parallelo che abbia una coda FIFO condivisa (multi consumer / multi producer). La coda contiene solo URL. Come posso rilevare la fine della coda?
Un processo di lavoro è sempre consumatore e produttore allo stesso tempo perché prende un URL dalla coda, lo scansiona e aggiunge alla coda gli eventuali URL trovati. Penso che non ci sia modo di avere processi separati per le attività dei consumatori e dei produttori in questo scenario.
Poiché la quantità di dati di input è sconosciuta ma non infinita, è impossibile utilizzare una "pillola avvelenata" come sentinella nella coda, giusto?
Inoltre, la dimensione della coda non è un modo affidabile per scoprire se la coda è vuota (a causa di più consumatori / produttori).
Per favore mi illumini: -)