learning threads on linux

前端 未结 5 615
遇见更好的自我
遇见更好的自我 2021-01-13 16:55

Linux is a new platform to me. I\'ve coded on Windows in c++ for a number of years and have become comfortable with multithreading on that platform.

Along comes C++

5条回答
  •  醉梦人生
    2021-01-13 17:31

    std::thread is boost::thread accepted into C++11 with some extras. My understanding is that if boost::thread gets replaced in code with std::thread it should still compile and work.

    boost::thread is based on pthreads design, providing thin C++ wrappers over thread, mutex and condition variables. Thread cancellation though was left outside the scope of C++11, since there was no agreement how it should work in C++.

    So, by learning pthreads you also learn std::thread concepts. std::thread adds mostly syntax sugar and convenience functions on top of pthreads C API.

    With regards to WaitForMultipleObjects(), neither pthreads nor std::thread provide anything similar to its bWaitAll=FALSE mode, however, it's routinely simulated using pipes and select() on UNIX, or more modern eventfd() and epoll() on Linux. bWaitAll=TRUE mode can be simulated by waiting on all tasks in turn, since it doesn't proceed until all objects are ready anyway.

提交回复
热议问题