C++11对多线程的支持很完善,互斥量,锁,条件变量,原子操作一应俱全,posix线程库还能另外提供的也就是记录锁,消息队列,但这些都可以在需要时自行实现.而且用C++原生线程库的代码还能够跨平台.
请问现在实际工程中涉及多线程的部分向C++11原生多线程库迁移的如何了?使用posix线程库进行开发的情况还多不多?
黄舟2017-04-17 11:43:57
在POSIX系統中,你覺得能脫離PThread麼,貌似底層就是PThread實現的。簡單的用std::thread完全沒有問題,但複雜的功能,需要自訂的還是得基於PThread自行封裝。 STL更好的是演算法和容器,多執行緒還不是非常好。僅代表個人看法。
迷茫2017-04-17 11:43:57
我記得C++11的執行緒函式庫是根據OpenMP進行封裝的。 pThread在性能和使用上和OpenMP還是差一些,個人認為,可以了解,如果沒有時間,就沒有深究的必要。
阿神2017-04-17 11:43:57
我認為:C++11提供的std::thread等也不是語言等級的支持,而是標準函式庫的支持。其實學習起來和用法上c++ thread和pthread並沒有什麼差別(也許pthread有更多的參數?),還有就是你提到的pthread可以提供的其他東西。至於性能上我不認為兩者會有什麼差別。更多的區別可能是在移植性上。
所以,我覺得,不妨兩個都學吧。