[英]C++ library version of upcoming C++20 wait/notify
C++20 正在引入https://en.cppreference.com/w/cpp/atomic/atomic/wait和https://en.cppreference.com/w/cpp/atomic/atomic/notify_one ,其中引入了原子等待和通知功能。
我想使用它,但我的编译器还不支持它。
这个功能有可靠的库实现吗?
如果您的编译器的标准库实现还不支持它,您可以使用 Boost.Atomic。
我是否正确,这样的等待/通知功能将允许我做我想做的事情(即,让我的消费者线程 go 休眠并让生产者在不获取互斥锁的情况下有效地唤醒它(这是必要的,我相信,带有条件变量)。
正确的。
实际上,有没有更好的方法来做到这一点,我目前没有想到?
原子等待是一个好方法。 您可能还想以最佳方式使用它:
futex
,它需要 32 位 integer。 在 Windows 上, WaitOnAddress
可以采用 8、16、32 或 64 的任意大小。在其他系统上考虑它们的原子等待实现。作为其他好方法,您可以考虑使用 C++20 信号量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.