C ++ 17 Семафор POSIX или переменная условие? - PullRequest
1 голос
/ 31 марта 2020

Я работаю над проектом, который включает обработку событий. У меня есть доступ к среде g ++ - 9, C ++ 17 (также возможно C ++ 20).

Мне требуется поведение семафора. Мой обработчик событий , помещает событие в очередь для обработки другим потоком ( обработчик событий ). Обработчик событий должен быть очень легковесным, чтобы не пропустить быстро происходящие события. Поэтому я планирую просто поставить в очередь и увеличить семафор в обработчике событий , а затем выполнить загрузку в обработчике событий , уменьшив семафор. (Избегание ожидания ожидания в обработчике событий , который всегда будет работать.)

Это очень просто, используя семафор POSIX, однако я также читал, что семафоры могут быть реализованы с использованием condition_variables, counters, unique_locks , mutex 'в C ++. Интересно, стоит ли писать просто стиль C ++ для достижения простого поведения семафора POSIX. Что еще более важно, какой из них быстрее? Какой вариант лучше для меня?

Заранее спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Просто возьмите готовый объект C ++ «потокобезопасная очередь» и позвольте ему сделать грязную работу за вас. Правильные реализации такого рода вещей уже сделаны (до смерти ...).

Прочитайте обсуждения, как это: https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/.

...