Sono in procinto di eseguire il porting di un codice Java su C++ e una sezione specifica utilizza un BlockingQueue per passare messaggi da molti produttori a un singolo utente.C++ Equivalente a Java's BlockingQueue
Se non si ha familiarità con cosa sia un Java BlockingQueue, è solo una coda con una capacità difficile, che espone metodi thread-safe da put() e take() dalla coda. put() blocca se la coda è piena e take() blocca se la coda è vuota. Inoltre, vengono fornite versioni sensibili a timeout di questi metodi.
I timeout sono rilevanti per il mio caso d'uso, quindi una raccomandazione che li fornisce è l'ideale. In caso contrario, posso indicizzarne qualcuno.
Ho cercato su Google e rapidamente ho sfogliato le librerie Boost e non trovo nulla di simile. Forse sono cieco qui ... ma qualcuno sa di una buona raccomandazione?
Grazie!
classe fatta a mano che ha un array (forse deque invece di array per facilitare pop_front push_back) e mutex? – NoSenseEtAl
è davvero una grande capacità? –
Nel mio caso, sì. È molto probabile che i produttori superino i consumatori e io abbia la necessità di bloccare i thread dal lato del produttore, o altrimenti di rifiutare il loro input, per paura che finisca la memoria! – Ben