繁体   English   中英

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

[英]C++17 POSIX Semaphore or condition_variable?

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

我需要信号量的行为。 我的事件处理程序将事件推送到队列中,由另一个线程(事件处理器)处理。 事件处理程序需要非常轻量级,以免错过快速发生的事件。 所以我计划只在事件处理程序中排队并增加信号量,然后在事件处理器中执行加载工作,减少信号量。 (避免在将始终运行的事件处理器中忙等待。)

这很容易使用 POSIX 信号量,但是我也读到信号量可以使用 C++ 中的条件变量、计数器、unique_locks、互斥锁来实现。 我想知道仅仅编写 C++ 风格来实现简单的 POSIX 信号量行为是否值得。 更重要的是,哪个更快? 哪个对我来说是更好的选择?

提前致谢。

只需抓住一个现成的 C++“线程安全队列”对象,让它为你做那些肮脏的工作。 这种事情的正确实现已经完成(致死......)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM