c 多執行緒程式設計問題,C 多執行緒程式設計問題

2022-03-10 13:50:58 字數 1883 閱讀 6036

1樓:匿名使用者

如果兩個執行緒能同時執行,那麼效能可以提高一半,這裡有個前提條件:你的程式執行時被分配兩個cpu核心,並且執行過程中沒有意外的中斷。在實際的環境中,作業系統的程序數和執行緒數總是多於cpu核心的數量,你不能保證程式的每次執行總能獲得合適的cpu數以及執行過程中不會被中斷,也許某一次的執行是所有執行緒依次執行。

對於c++03/98來說,由於語言本身並不直接支援多執行緒,所以只能使用第三方執行緒庫或者直接使用作業系統api,某些第三方執行緒庫並不能提供足夠的併發能力,使用api 由於核心模式切換導致執行緒的效能低下。

2樓:匿名使用者

多執行緒和單執行緒的執行效率問題。不是單純從某一個角度考慮,還需要兼顧其他方面。比如要依賴實際開發中的問題和場景,甚至還要依賴硬體水平(單核還是多核)、軟體水平(多執行緒實現原則)。

樓主可參考這篇文章的介紹:

3樓:重新整理①丅

是的,理論上兩個執行緒同時工作要比一個執行緒高出將近一倍的效率的。

但其實現在多執行緒程式設計往往並不是用來提高效率的,打個比方如果你寫過ui,你應該就會經常使用多執行緒程式設計來預防介面假死;如果你做過網路程式設計,你會發現多執行緒的主要目的是用來監聽/接受訊息...在這些地方多執行緒的主要目的並不是為了提高效率。

4樓:

多執行緒工作可以提高解決問題的速度

你舉得例子可以多執行緒實現,但是更多的人稱之為分散式計算多執行緒主要是建立多個執行緒,每個執行緒負責自己的事情,每個執行緒只對主執行緒負責

至於解決問題的速度應該可以達到提高一半,但是你要注意資源的互斥,互斥處理不好估計會事倍功半

5樓:匿名使用者

是的,多執行緒的一個重要應用就是平行計算

c++的多執行緒程式設計問題

6樓:搗蒜大師

//你可以試試把a宣告

int idx_a=0;

//改為

std::atomic_int idx_a=0;

如何評價 c++多執行緒程式設計實戰 知乎

7樓:道峰山營

多執行緒程式設計的難點不在於鎖,正常人看一下作業系統再寫幾個執行緒demo就可以基本理解了。對於c++而言,甚至連編寫執行緒安全的類也不是難事。只需要用同步原語來保持對共享資源的訪問即可。

我個人覺得最需要的就是實戰,寫demo誰都會寫。同步原語就那麼幾個,訊號量,互斥量,條件變數等。但是怎麼用呢?

當你從點選星際爭霸到和玩家匹配進行遊戲,這當中程式是怎麼執行的?事件驅動是怎麼驅動的?就目前來說,我遇到的困難不是執行緒的死鎖,而是對併發模型的理解。

actor,reactor模式等。這些東西不實戰,個人空想理解起來會吃力。

c++中多執行緒程式設計是不是執行緒數越多越好

8樓:米飯發言

不是,copy因為機器的cpu數、cpu核心數、單核心的執行緒數都是固定的。例如你的機器有1個cpu,雙核四執行緒,那麼你的機器最多同時跑四個執行緒。所以,設定執行緒數為4,理論上能獲得最大效率。

需要額外考慮的是執行緒之間的切換也是很耗時的,所以不建議設定過多執行緒數,有可能會適得其反。

9樓:匿名使用者

最好是cpu核心數+2

想接觸c++多執行緒程式設計,需要從哪方面入手,有沒有

10樓:匙謅

陳碩的muduo網路庫可以看一下

11樓:

c++11 stl中的thread模板類不錯,上手很簡單

c 類的靜態成員,在多執行緒訪問時需要加保護嗎?

在多執行緒中使用同一個靜態方法時,每個執行緒使用各自的例項欄位 instance field 的副本,而共享一個靜態欄位 static field 所以說,如果該靜態方法不去操作一個靜態成員,只在方法內部使用例項欄位 instance field 不會引起安全性問題。但是,如果該靜態方法操作了一個靜...

c語言程式設計問題,C語言程式設計問題?

int main printf 字母數 d n空格數 d n數字數 d n其他字元數 d n letters,space,digit,other return 0 第一個問題 無效的主要 i 100 i 100 第二個問題,到1 100奇 0 int i 1 i 1 100 i i 100 而 i ...

C語言程式設計問題,c語言程式設計問題

先while或do while輸入成績,成績放入先定義的陣列,直到輸入負數結束。然後for迴圈算出總成績,然後定義變數平均直,算出變數直。for迴圈裡套if條件低於60輸出。課本上有例子,你看呀。c語言程式設計問題 提問怎麼改。把replace函式提到main函式外面。提到main函式的前面。或者在ma...