命名空間
變體
動作

std::jthread

出自 cppreference.com
< cpp‎ | thread
 
 
並行支援函式庫
執行緒
(C++11)
jthread
(C++20)
this_thread 命名空間
(C++11)
(C++11)
(C++11)
協作式取消
互斥 (Mutual exclusion)
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
條件變數
(C++11)
旗標 (Semaphores)
閂鎖 (Latches) 與屏障 (Barriers)
(C++20)
(C++20)
期約 (Futures)
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
風險指標 (Hazard Pointers)
原子型別
(C++11)
(C++20)
原子型別初始化
(C++11)(在 C++20 中棄用)
(C++11)(在 C++20 中棄用)
記憶體順序
(C++11)(在 C++26 中棄用)
原子操作的自由函式
原子旗標的自由函式
 
 
定義於標頭檔 <thread>
class jthread;
(自 C++20 起)

jthread 類別代表單一執行緒。除了 jthread 在解構時會自動執行 join,且在特定情況下可被取消或停止之外,其餘行為與 std::thread 大致相同。

執行緒在關聯的執行緒物件建構後立即開始執行(需等待作業系統排程延遲),並從作為建構函式參數提供的頂層函式開始。頂層函式的回傳值會被忽略,若其因拋出例外而終止,則會呼叫 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 不是 可複製建構 (CopyConstructible)可複製賦值 (CopyAssignable) 的,但它是 可移動建構 (MoveConstructible)可移動賦值 (MoveAssignable) 的。

目錄

[編輯] 成員型別

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

[編輯] 成員函式

建構新的 jthread 物件
(公開成員函式) [編輯]
若執行緒可 join,則請求停止並執行 join
(公開成員函式) [編輯]
移動 jthread 物件
(公開成員函式) [編輯]
觀察器
檢查執行緒是否可 join,即是否可能在並行環境中執行
(公開成員函式) [編輯]
回傳執行緒的 id
(公開成員函式) [編輯]
回傳底層由實作定義的執行緒控制代碼 (handle)
(公開成員函式) [編輯]
回傳實作支援的併發執行緒數量
(公開靜態成員函式) [編輯]
作業 (Operations)
等待執行緒完成其執行
(公開成員函式) [編輯]
允許執行緒脫離執行緒控制代碼獨立執行
(公開成員函式) [編輯]
交換兩個 jthread 物件
(公開成員函式) [編輯]
停止符記 (Stop token) 處理
回傳與執行緒的共享停止狀態相關聯的 stop_source 物件
(公開成員函式) [編輯]
回傳與執行緒的共享停止狀態相關聯的 stop_token
(公開成員函式) [編輯]
透過執行緒的共享停止狀態請求停止執行
(公開成員函式) [編輯]

[編輯] 非成員函式

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

[編輯] 附註

功能測試巨集 數值 標準 功能
__cpp_lib_jthread 201911L (C++20) 停止符記 (Stop token)joining 執行緒

[編輯] 參閱

(C++11)
管理一個獨立的執行緒
(類別) [edit]
English Deutsch 日本語 中文(简体) 中文(繁體)