C++11 std::threads vs posix threads

后端 未结 4 2009
广开言路
广开言路 2020-12-02 04:05

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

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-02 04:37

    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.

提交回复
热议问题