c++multithreadingc++11pthreadsstd

C++11 std::thread vs Posix threads


Why should I prefer one or another in practice? What are the technical differences except that std::thread is a class?


Solution

  • If you want to run code on many platforms, go for Posix Threads. They are available almost everywhere and are quite mature. On the other hand if you only use Linux/gcc std::thread is perfectly fine - it has a higher abstraction level, a really good interface and plays nicely with other C++11 classes.

    The C++11 std::thread class unfortunately doesn't work reliably (yet) on every platform, even if C++11 seems available. For instance in native Android std::thread or Win64 it just does not work or has severe performance bottlenecks (as of 2012).

    A good replacement is boost::thread - it is very similar to std::thread (actually it is from the same author) and works reliably, but, of course, it introduces another dependency from a third party library.


    Edit: As of 2017, std::thread mostly works on native Android. Some classes, like std::timed_mutex are still not implemented.