名稱空間
變體
操作

std::jthread

來自 cppreference.com
< cpp‎ | thread
 
 
併發支援庫
執行緒
(C++11)
jthread
(C++20)
this_thread 名稱空間
(C++11)
(C++11)
(C++11)
協同取消
互斥
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
條件變數
(C++11)
訊號量
門閂和屏障
(C++20)
(C++20)
期值
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危險指標
原子型別
(C++11)
(C++20)
原子型別的初始化
(C++11)(C++20 中已棄用)
(C++11)(C++20 中已棄用)
記憶體排序
(C++11)(C++26 中已棄用)
原子操作的自由函式
原子標誌的自由函式
 
 
定義於標頭檔案 <thread>
class jthread;
(C++20 起)

jthread 類表示一個獨立的執行執行緒。它與std::thread具有相同的通用行為,除了jthread在析構時會自動加入,並且可以在某些情況下被取消/停止。

執行緒在關聯的執行緒物件構造後(等待任何作業系統排程延遲)立即開始執行,從作為建構函式引數提供的頂層函式開始。頂層函式的返回值被忽略,如果它透過丟擲異常終止,則呼叫std::terminate。頂層函式可以透過std::promise或修改共享變數(可能需要同步,請參閱std::mutexstd::atomic)將其返回值或異常傳遞給呼叫者。

std::thread不同,jthread 邏輯上持有一個型別為 std::stop_source 的內部私有成員,它維護一個共享的停止狀態。jthread 建構函式接受一個函式,該函式將std::stop_token作為其第一個引數,該引數將由jthread從其內部std::stop_source傳遞。這允許函式在執行期間檢查是否已請求停止,並在已停止的情況下返回。

std::jthread 物件也可能處於不表示任何執行緒的狀態(在預設構造、移動、detachjoin之後),並且執行執行緒可能不與任何jthread物件關聯(在detach之後)。

沒有兩個 std::jthread 物件可以表示相同的執行執行緒;std::jthread 不可CopyConstructibleCopyAssignable,儘管它是MoveConstructibleMoveAssignable

目錄

[編輯] 成員型別

成員型別 定義
id std::thread::id
native_handle_type (可選*) std::thread::native_handle_type[編輯]

[編輯] 成員函式

構造新的 jthread 物件
(公共成員函式) [編輯]
如果執行緒可連線,則請求停止並連線執行緒
(公共成員函式) [編輯]
移動 jthread 物件
(公共成員函式) [編輯]
觀察器
檢查執行緒是否可join,即是否可能在並行上下文中執行
(公共成員函式) [編輯]
返回執行緒的 id
(公共成員函式) [編輯]
返回底層實現定義的執行緒控制代碼
(公共成員函式) [編輯]
返回實現支援的併發執行緒數
(公共靜態成員函式) [編輯]
操作
等待執行緒完成其執行
(公共成員函式) [編輯]
允許執行緒獨立於執行緒控制代碼執行
(公共成員函式) [編輯]
交換兩個 jthread 物件
(公共成員函式) [編輯]
Stop token handling
返回與執行緒共享停止狀態關聯的 stop_source 物件
(公共成員函式) [編輯]
返回與執行緒共享停止狀態關聯的 stop_token
(公共成員函式) [編輯]
透過執行緒的共享停止狀態請求停止執行
(公共成員函式) [編輯]

[編輯] 非成員函式

特化 std::swap 演算法
(函式) [編輯]

[編輯] 註釋

特性測試 標準 特性
__cpp_lib_jthread 201911L (C++20) 停止令牌連線執行緒

[編輯] 另請參閱

(C++11)
管理一個獨立的執行緒
(類) [編輯]