學習c 多執行緒程式設計主要用pthread還是c 11中的thread類?

時間 2021-05-30 03:47:07

1樓:諸葛不亮

標準庫執行緒可以get_id拿到pid_t或者HANDLE,不影響你使用native api。

然後用std方便的部分用std寫,用native方便的部分用native寫,這就叫合併兩個生態。

反之則不行。完畢。

2樓:

兩種都應該掌握

std::thread在Linux平台上不過是對pthread的一層包裝,很多概念都和pthread有對應,掌握pthread可以幫助理解std::thread,pthread在歷史積累下,用的也非常多,有歷史積累的第三方跨平台庫,以及要相容古代C++的,背後肯定有pthread的影子。

ps: 我同意陳碩和徐辰的看法,std::thread該提供的沒有提供(比如執行緒池), 過於複雜的抽象搞了一大堆。

std::thread當然也應該掌握,雖然pthread也能跨平台,但是進入標準的東西,在學習實踐中,難免會看到有人用。其包含的一些抽象也確實方便了執行緒使用。

3樓:

請問C++11如何優雅的結束乙個執行緒。。。委員會這次還真是給出了個雞肋,估計之後的版本會好一些。不過長久看用C++11確實是可移植性和方便的。

當你發現C++11 thread雞肋的時候,你可以用native_handler獲得pthread的handler。這樣就好用了,等以後C++更新了再改吧^_^

4樓:

如果你想用pthread,最好也別裸著用。自己包裝一下唄。

強烈推薦 @陳碩 老師的那本《linux多執行緒伺服器程式設計》,學著自己封裝一下 Mutex,LockGuard,ConditionVar,BlockQueue,ThreadPool

到頭來,你還是得兩樣都學。

用哪個的話,聽leader的

5樓:

pthread是最好的,如果要用併發容器可以用用那些C++封裝的,如果要考慮跨平台的話,用巨集把位置都留出來,Linux,windows,安卓,iOS,Mac等,一定要懂得封裝的東西雖然方便但是在靈活使用已經效能調優方面會受限

6樓:

看跨平台的需求了。執行緒這種既簡單又底層的東西,我覺得如果沒跨平台需求的話,直接用系統api或crt裡的函式(推薦)就行了,因為太簡單了…

7樓:Xi Yang

如果你用C++11的執行緒庫,那麼基本可以避免跨平台的問題,但是會對編譯器版本有要求。現在還有不少人再用CentOS 4,GCC可能只是4.3、4.4的樣子。

於是你還有乙個選擇:自己搞定Windows API、pthread,然後自己寫一套執行緒包裝。

8樓:藍色

C++的thread是經過良好設計並且跨平台的執行緒表示方式,然而pthread是「粗獷、直接、暴力」的類UNIX平台執行緒表示方式,如你在C++11的thread你可以使用lock_guard等來實現RAII方式的lock管理,而pthread則很難。

推薦C++併發程式設計實踐這本書,是Boost執行緒和STL執行緒提案作者所著,寫的很好。

關於多執行緒程式設計和CPU多核多執行緒的關係?

佐佐浪 具體到你的例子,修改優先順序和修改時間片是無法達到這個效果的。你需要做的是把你的計算部分做成並行的。單獨乙個執行緒是達不到你要的效果的。 棒子先生 首相我們了解下為什麼需要用到4核,這是由於不能盲目的提高CPU的主頻和頻寬,這樣會產生各種實際很難處理的問題,比如溫度飆公升等。舉例來說我們需要...

多執行緒網路程式設計中如何合理地選擇執行緒數?

jameswhale 若業務是CPU計算型,建立比CPU核多的執行緒的確是沒有意義的,徒增執行緒的切換開銷。若業務是IO密集型的,可以建立比CPU核數多一些的執行緒,實際經驗是一般設定為2倍。 戈君 需要的執行緒數 qps latency 單位秒 依據是little s law,類似的應用是tcp中...

多執行緒程式設計時,最佳執行緒數目與什麼有關,核數,還有其他的嗎?

Name5566 我所了解到的原則是 活躍執行緒數為 CPU 核 數時最佳。過少的活躍執行緒導致 CPU 無法被充分利用,過多的活躍執行緒導致過大的執行緒上下文切換開銷。首先執行緒應該是活躍的,處於 IO 的執行緒,休眠的執行緒等均不消耗 CPU。在實際環境中,當前活躍執行緒數一直在變化,很多活躍執...