C ++ Equivalente a Java’s BlockingQueue

Sono in procinto di trasferire un po ‘di codice Java in C ++, e una sezione specifica usa un BlockingQueue per passare messaggi da molti produttori a un singolo consumatore.

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!