我试图在这个 websocket++ 示例中boost::lockfree::queue
替换https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cppstd::queue
看起来它可以在不真正改变任何语法但删除boost::unique_lock
行的情况下完成。
但是,当我查看 boost 示例时,它有一个代码部分检查无锁http://boost-sandbox.sourceforge.net/doc/html/lockfree/examples.html
当我查看文档时lockfree::queue
,它在is_lock_free()
http://boost-sandbox.sourceforge.net/doc/html/boost/lockfree/queue.html上说:
bool is_lock_free(void) 常量;
警告
它只检查是否可以以无锁方式修改队列头和尾节点以及空闲列表。在大多数平台上,如果这是真的,整个实现是无锁的。使用 c++0x 风格的原子,不可能提供完全准确的实现,因为需要测试每个内部节点,如果从操作系统分配更多节点,这是不可能的。
返回:true,如果实现是无锁的。
我不知道“c++0x 风格的原子”是什么,但我很确定 c++0x 意味着 c++11。
我正在使用 c++11 并且只是替换boost::lockfree::queue
,std::queue
所以这不会实现无锁吗?