C++11 std::threads vs posix threads

Shamdor picture Shamdor · Oct 30, 2012 · Viewed 87.8k times · Source

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

Answer

Gunther Piez picture Gunther Piez · Oct 30, 2012

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.