このwebsocket ++boost::lockfree::queue
の例で代用しようとしています https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cppstd::queue
構文を実際に変更せずにboost::unique_lock
行を削除することなく実行できるようです。
ただし、ブーストの例を見ると、ロックフリーをチェックするコードセクションがありますhttp://boost-sandbox.sourceforge.net/doc/html/lockfree/examples.html
のドキュメントを見ると、 http://boost-sandbox.sourceforge.net/doc/html/boost/lockfree/queue.htmllockfree::queue
で次のように書かれています。is_lock_free()
bool is_lock_free(void) const;
警告
キューのヘッドノードとテールノード、およびフリーリストをロックなしで変更できるかどうかのみをチェックします。ほとんどのプラットフォームでは、これが当てはまる場合、実装全体がロックフリーです。c++0x スタイルのアトミックを使用すると、すべての内部ノードをテストする必要があるため、完全に正確な実装を提供する可能性はありません。これは、オペレーティング システムからさらにノードが割り当てられる場合には不可能です。
戻り値: true (実装がロックフリーの場合)。
「c++0x スタイルのアトミック」とは何かはわかりませんが、c++0x が c++11 を意味することは確かです。
私は c++11 を使用していて、単に を置き換えboost::lockfree::queue
ているだけstd::queue
なので、これはロックフリーで実装されませんか?