I'm trying to substitute boost::lockfree::queue
for std::queue
in this websocket++ example https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp
It looks like it can be done without really changing any syntax yet removing the boost::unique_lock
lines.
However, when I look at the boost example, it has a code section that checks for lockfree http://boost-sandbox.sourceforge.net/doc/html/lockfree/examples.html
When I look through the docs on lockfree::queue
, it says this on is_lock_free()
http://boost-sandbox.sourceforge.net/doc/html/boost/lockfree/queue.html:
bool is_lock_free(void) const;
Warning
It only checks, if the queue head and tail nodes and the freelist can be modified in a lock-free manner. On most platforms, the whole implementation is lock-free, if this is true. Using c++0x-style atomics, there is no possibility to provide a completely accurate implementation, because one would need to test every internal node, which is impossible if further nodes will be allocated from the operating system.
Returns: true, if implementation is lock-free.
I have no idea what "c++0x-style atomics" are, but I'm pretty sure that c++0x mean c++11.
I'm using c++11 and merely substituting boost::lockfree::queue
for std::queue
, so will this not be implemented lockfree?
std::queue
unless you've got several cores and a very high amount of contention. – LehrerI have no idea what "c++0x-style atomics" are
is talking about boost::atomic which the library relies upon. – Clearance