Одна часть моей программы создает какие-то сообщения. Эти сообщения затем обрабатываются во второй части.
Мне нужна какая-то временная очередь между частями моей программы, которая может хранить сообщения в памяти X секунд. X не изменяется, пока существует эта временная очередь.
В идеале это должно выглядеть так:
tqueue_t *tqueue_new(int seconds);
int tqueue_push(tqueue_t *queue, void *msg);
void *tqueue_pop(tqueue_t *queue);
tqueue_pop()
должен блокироваться и возвращаться, когда первое сообщение находилось в очереди в течение X секунд.
Каков наилучший способ сделать это? Может быть, есть какие-то уже существующие решения?
Язык: C
ОС: * nix
Также эта очередь должна работать в многопоточной среде.