Я работаю над многопоточным C-приложением, использующим pthreads. У меня есть один поток, который записывается в базу данных (библиотека базы данных безопасна только для использования в одном потоке) и несколько потоков, которые собирают данные, обрабатывают их, а затем должны отправлять результаты в поток базы данных для хранения. Я заметил, что "возможно" сделать безопасную очередь с несколькими писателями на C, но каждое место, которое я вижу в этом упоминании, просто говорит, что оно "слишком сложно для этого примера" и просто демонстрирует безопасную очередь для одного писателя.
Мне нужны следующие вещи:
- Эффективная установка и удаление. Я бы предположил, что, как и любая другая очередь O (1) enqueueing и dequeueing, возможно.
- Динамически распределенная память, т.е. связанная структура. Мне не нужно иметь произвольный лимит на размер очереди, поэтому массив действительно не то, что я ищу.
РЕДАКТИРОВАТЬ: Чтение потоков не должно вращаться в пустой очереди, так как, вероятно, будет минутное время, без записи, с короткими очередями большого количества записей.