Очереди сообщений Posix выглядит хорошим кандидатом, если ваши данные не слишком велики.
Вы также можете использовать семафор POSIX :
Поток производителя помещает данные в очередь и делает sem_post
Поток потребителя ожидает с помощью sem_wait и удаляет данные из очереди.
Использовать IMO проще, чем переменную условия. Конечно, вам нужно защитить свою очередь. В зависимости от размера объекта он может быть более подходящим, чем очереди сообщений, но вам нужно реализовать собственную очередь.
Оба могут использоваться между процессами вместо потоков. Если вы решите использовать процесс вместо потока, вы можете сохранить механизм синхронизации, что не относится к условным переменным.