Я работаю над проектом, который включает обработку событий. У меня есть доступ к среде g ++ - 9, C ++ 17 (также возможно C ++ 20).
Мне требуется поведение семафора. Мой обработчик событий , помещает событие в очередь для обработки другим потоком ( обработчик событий ). Обработчик событий должен быть очень легковесным, чтобы не пропустить быстро происходящие события. Поэтому я планирую просто поставить в очередь и увеличить семафор в обработчике событий , а затем выполнить загрузку в обработчике событий , уменьшив семафор. (Избегание ожидания ожидания в обработчике событий , который всегда будет работать.)
Это очень просто, используя семафор POSIX, однако я также читал, что семафоры могут быть реализованы с использованием condition_variables, counters, unique_locks , mutex 'в C ++. Интересно, стоит ли писать просто стиль C ++ для достижения простого поведения семафора POSIX. Что еще более важно, какой из них быстрее? Какой вариант лучше для меня?
Заранее спасибо.