Я пытаюсь перенести мое многопоточное приложение Windows в Unix. В моем приложении мы создали пользовательские события, которые сигнализируют потоку выполнить конкретную задачу. Я обнаружил, что условную переменную или семафор можно использовать для сигнализации потоков. Моим требованием является создание динамических событий по запросу, но это невозможно для условной переменной или семафор. Помогите мне использовать такие события, как концепции сигнализации в Unix.
Посиковые потоки позволяют общаться между потоками с мьютексом и условиями. man pthreads
, man pthread_cond_wait
и другие.
Другой способ создания событий не зависит от потоков и делает на дескрипторах. Смотрите man epoll
, man poll
, man select
Внедрение системы событий вручную на C
может занять некоторое время, поэтому существуют библиотеки, которые реализуют систему libev
, libuv
как libev
, libuv
, libevent
, libevent2
.
Если вы хотите больше C++
то C
вы можете использовать boost
(например, boost::signals
. Не знаете, есть ли другие) или Qt
, у которого есть полный механизм сигнала/слота и система событий, встроенная. Но для этого требуется довольно тяжелая зависимостей.
Если вы хотите, чтобы полная реализованная очередь событий и многие функции Interprise, вы можете посмотреть любую инфраструктуру AMQP
такую как rabbitmq
.
Трудно сказать вам, что вам нужно, без особых проблем.