C 併發程式設計之thread

2021-10-03 19:30:57 字數 890 閱讀 5406

std::thread 在 標頭檔案中宣告,因此使用 std::thread 時需要包含 標頭檔案。

std::thread 構造:

注意:可被 joinable 的 thread 物件必須在他們銷毀之前被主線程 join 或者將其設定為 detached.

示例:

#include

#include

#include

#include

#include

#include

voidf1(

int n)

}voidf2(

int& n)

}int

main()

move 賦值操作:

其他成員函式

std::this_thread::yield(): 執行緒呼叫該方法時,主動讓出cpu,並且不參與cpu的本次排程,從而讓其他執行緒有機會執行。在後續的排程週期裡再參與cpu排程。這是主動放棄cpu的方法介面。

std::sleep_for():執行緒呼叫該方法時,同樣會讓出cpu,並且休眠一段時間,從而讓其他執行緒有機會執行。等到休眠結束時,才參與cpu排程。這也是主動放棄cpu的方法。

兩者的不同很明顯,yield()方法讓出cpu的時間是不確定的,並且以cpu排程時間片為單位。而sleep_for()讓出cpu的時間是固定的。

yield()的實現依賴於作業系統cpu排程策略,在不同的作業系統或者同乙個作業系統的不同排程策略下,表現也可能是不同的。

C 併發程式設計 thread

c 11在標準庫中為多執行緒提供元件,使用執行緒需要包含標頭檔案 thread,其命名空間為 std.每個程序至少有乙個執行緒 執行main 函式的執行緒,其餘執行緒有其各自的入口函式 執行緒函式 當執行緒執行完執行緒函式後,執行緒也會退出.如果不傳入執行緒函式 類似這種形式std thread t...

java高併發程式設計之深入理解Thread建構函式

2.1 執行緒的命名 構造中含有string name引數的就表示執行緒的名字。還可以呼叫thread 類的setname 方法重新命名 2.2 執行緒的父子關係 thread的所有建構函式,最終都會去呼叫乙個靜態方法init.private void init threadgroup g,runn...

C 併發程式設計之atomic

原子型別物件的主要特點就是從不同執行緒訪問不會導致資料競爭 data race 因此從不同執行緒訪問某個原子物件是良性 well defined 行為,而通常對於非原子型別而言,併發訪問某個物件 如果不做任何同步操作 會導致未定義 undifined 行為發生。std atomic flag是乙個b...