C ++ 17 POSIX信号量或condition_variable?

问题描述 投票:1回答:1

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

我需要一个信号灯的行为。我的事件处理程序将事件推送到队列中,由另一个线程(事件处理器)处理。 事件处理程序必须非常轻巧,以免错过快速发生的事件。因此,我计划只在事件处理程序中排队并增加信号量,然后在事件处理器中进行加载工作,从而减少信号量。 (避免在事件处理器中一直忙于等待。)

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

提前感谢。

c++ c multithreading synchronization posix
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.