std::jthread
來自 cppreference.com
定義於標頭檔案 <thread> |
||
class jthread; |
(C++20 起) | |
jthread
類表示一個獨立的執行執行緒。它與std::thread具有相同的通用行為,除了jthread
在析構時會自動加入,並且可以在某些情況下被取消/停止。
執行緒在關聯的執行緒物件構造後(等待任何作業系統排程延遲)立即開始執行,從作為建構函式引數提供的頂層函式開始。頂層函式的返回值被忽略,如果它透過丟擲異常終止,則呼叫std::terminate。頂層函式可以透過std::promise或修改共享變數(可能需要同步,請參閱std::mutex和std::atomic)將其返回值或異常傳遞給呼叫者。
與std::thread不同,jthread
邏輯上持有一個型別為 std::stop_source
的內部私有成員,它維護一個共享的停止狀態。jthread
建構函式接受一個函式,該函式將std::stop_token作為其第一個引數,該引數將由jthread
從其內部std::stop_source傳遞。這允許函式在執行期間檢查是否已請求停止,並在已停止的情況下返回。
std::jthread
物件也可能處於不表示任何執行緒的狀態(在預設構造、移動、detach或join之後),並且執行執行緒可能不與任何jthread
物件關聯(在detach之後)。
沒有兩個 std::jthread
物件可以表示相同的執行執行緒;std::jthread
不可CopyConstructible或CopyAssignable,儘管它是MoveConstructible和MoveAssignable。
目錄 |
[編輯] 成員型別
成員型別 | 定義 |
id
|
std::thread::id |
native_handle_type (可選*) |
std::thread::native_handle_type |
[編輯] 成員函式
構造新的 jthread 物件(公共成員函式) | |
如果執行緒可連線,則請求停止並連線執行緒 (公共成員函式) | |
移動 jthread 物件(公共成員函式) | |
觀察器 | |
檢查執行緒是否可join,即是否可能在並行上下文中執行 (公共成員函式) | |
返回執行緒的 id (公共成員函式) | |
返回底層實現定義的執行緒控制代碼 (公共成員函式) | |
返回實現支援的併發執行緒數 (公共靜態成員函式) | |
操作 | |
等待執行緒完成其執行 (公共成員函式) | |
允許執行緒獨立於執行緒控制代碼執行 (公共成員函式) | |
交換兩個 jthread 物件 (公共成員函式) | |
Stop token handling | |
返回與執行緒共享停止狀態關聯的 stop_source 物件(公共成員函式) | |
返回與執行緒共享停止狀態關聯的 stop_token (公共成員函式) | |
透過執行緒的共享停止狀態請求停止執行 (公共成員函式) |
[編輯] 非成員函式
(C++20) |
特化 std::swap 演算法 (函式) |
[編輯] 註釋
特性測試宏 | 值 | 標準 | 特性 |
---|---|---|---|
__cpp_lib_jthread |
201911L |
(C++20) | 停止令牌和連線執行緒 |
[編輯] 另請參閱
(C++11) |
管理一個獨立的執行緒 (類) |