9 c++ queue boost lock-free c++11
我试图取代boost::lockfree::queue了std::queue在此的WebSocket ++例子https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp
看起来它可以在没有真正改变任何语法但删除boost::unique_lock行的情况下完成.
但是,当我查看boost示例时,它有一个代码部分,用于检查lockfree 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)const;
警告
它只检查队列头尾节点和空闲列表是否可以无锁方式修改.在大多数平台上,如果这是真的,整个实现是无锁的.使用c ++ 0x-style原子,不可能提供完全准确的实现,因为需要测试每个内部节点,如果从操作系统分配更多节点,这是不可能的.
返回:如果实现是无锁的,则返回 true.
我不知道"c ++ 0x-style atomics"是什么,但我很确定c ++ 0x意味着c ++ 11.
我使用C++ 11只是取代boost::lockfree::queue了std::queue,所以这将无法实现lockfree?
不可以."不可能提供完全准确的实现"评论指的是is_lock_free()- 即不能保证is_lock_free()返回准确反映实现是否无锁的结果.但是,如果is_lock_free()返回true,那么实现很可能是无锁定的 - 但不是绝对的,铸铁保证.
| 归档时间: |
|
| 查看次数: |
5550 次 |
| 最近记录: |