我正处于一个交界处,我试图在基于互斥锁的数据结构和无锁(可能还有无等待)数据结构之间选择一个。
在深入挖掘的同时,我没有发现 C++11 标准是否支持原子类型的无锁操作,甚至不支持基于宽度的积分,如atomic_uint32_t
. 换句话说,不只是std::atomic<>
接口没有被授予无锁;唯一看起来在整个标准库中被授予无锁的是std::atomic_flag
.
这是真的还是我错过了什么?这是什么原因?我的意思是标准调用“原子”的东西显然不是无锁的,它甚至允许在后台使用互斥锁或阻塞调用。