worker pool, который обрабатывает полученные уведомления. Раньше бот работал на Go, где воркеры ждали из канала событие и обрабатывали его.
В С++ каналов нет, поэтому думаю, каким образом можно заимплементить похожий механизм.
Пока вижу только такой вариант: в глобальном скопе есть переменная для объекта события, а также мьютекс и std::condition_variable. Воркер, будучи свободным, ждет изменения (которое пошлет основной тред), после чего обрабатывает. Но я не уверен, что condition_variable подойдет для этих целей, может быть есть более адекватный вариант?
да вроде для более-менее простого бота такой механизм уведомления событий подойдет. Главное, не забыть про spurious wakeups
тебе нужен threadpool. простой можно сделать и на основе cv + packaged_task
Обсуждают сегодня