title: boost c++ lock-free queue vs shared queue
body: <p>
  I'm quite new in multithreading programming, I just know the most common Producer-Consumer-Queue.
  I'm using the boost c++ libraries and I don't know if is better use boost::lockfree::queue or a wrapper class around std::queue that is using `mutex` and `condition_variable`.
  </p>
  <p>
  Where is better using lock free data structures and where is better is use a simple implementation based on `mutex` and `condition_variables`?
  </p>