C++17 POSIX信号量还是条件变量



我正在进行一个包含事件处理的项目。我可以访问g++-9、C++17(也可能是C++20(环境。

我需要信号灯的行为。我的事件处理程序将事件推送到队列中,由另一个线程(事务处理器(处理。事件处理程序需要非常轻量级,以免错过快速发生的事件。因此,我计划只在事件处理程序中对信号量进行排队和递增,然后在<strong]事件处理程序>中进行加载工作,递减信号量。(避免在事件处理器中忙于等待,该处理器将始终运行。(

使用POSIX信号量非常容易,但我也读到信号量可以使用C++中的condition_variables、counters、unique_locks、mutex实现。我想知道仅仅编写C++风格来实现简单的POSIX信号量行为是否值得麻烦。更重要的是,哪一个更快?哪一个对我来说是更好的选择?

提前谢谢。

只需获取一个现成的C++"线程安全队列"对象,让它为您做一些肮脏的工作。这类事情的正确实现已经完成了(直到死亡…(。

阅读这样的讨论:https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/.

最新更新