共用方式為


thread 類別

定義一個物件,用來觀察和管理應用程式內執行的執行緒。

語法

class thread;

備註

您可以使用 thread 物件,來觀察和管理應用程式內執行的執行緒。 thread使用預設建構函式所建立的物件不會與任何執行線程相關聯。 thread使用可呼叫物件所建構的物件會建立新的執行線程,並呼叫該 thread中的可呼叫物件。 Thread 物件可以移動,但無法複製,這就是為什麼執行線程只能與一個 thread 對象相關聯。

執行的每個執行緒都有 thread::id 類型的唯一識別碼。 函式 this_thread::get_id 會傳回呼叫執行緒的識別碼。 成員函式 thread::get_id 會傳回 物件所 thread 管理之線程的標識碼。 對於預設建構 thread 的物件, thread::get_id 方法會傳回物件,其值與所有預設建構 thread 物件的值相同,且與呼叫時可聯結之任何線程所傳回 this_thread::get_id 的值不同。

成員

公用類別

名稱 描述
id 可唯一識別相關聯的執行緒。

公用建構函式

名稱 描述
thread 建構 thread 物件。

公用方法

名稱 描述
detach thread 物件中斷連結相關聯的執行緒。
get_id 傳回相關聯執行緒的唯一識別碼。
hardware_concurrency 靜態。 傳回硬體執行緒內容的估計數目。
join 封鎖,直到相關聯的執行緒完成為止。
joinable 指定是否「可加入」相關聯的執行緒。
native_handle 傳回代表執行緒控制代碼的實作特定類型。
swap 與指定 thread 物件交換物件狀態。

公用運算子

名稱 描述
thread::operator= 將執行緒關聯至目前的 thread 物件。

需求

頁眉: <thread>

命名空間std

detach

中斷連結相關聯的執行緒。 作業系統會變成負責在終止時釋放執行緒資源。

void detach();

備註

呼叫 detach之後,後續會呼叫 以傳 get_idid

如果與呼叫物件相關聯的線程無法聯結,函式會擲回 system_error 具有 錯誤碼的 invalid_argument

如果與呼叫物件相關聯的執行緒無效,函式會擲回 system_error,且錯誤碼為 no_such_process

get_id

取得相關聯執行緒的唯一識別碼。

id get_id() const noexcept;

傳回值

物件,可唯一 id 識別關聯的線程,如果沒有 id() 與物件建立關聯的線程,則為 。

hardware_concurrency

靜態方法,會傳回硬體執行緒內容的估計數目。

static unsigned int hardware_concurrency() noexcept;

傳回值

硬體執行緒內容的估計數目。 如果無法計算或未妥善定義值,這個方法會傳回 0。

Microsoft 特定的

hardware_concurrency 目前已定義傳回邏輯處理器數目,其對應至可同時執行的硬體線程數目。 它會考慮實體處理器數目、每個實體處理器中的核心數目,以及每個單一核心同時進行多線程處理。

不過,在超過 64 個邏輯處理器的系統上,此數目會依單一群組中的邏輯處理器數目來限制;請參閱 處理器群組

id 類別

針對程序中執行的每個執行緒提供唯一識別碼。

class thread::id {
    id() noexcept;
};

備註

默認建構函式會建立不等於 thread::id 任何現有線程之 對象的物件。

所有預設建構的 thread::id 物件都會比較是否相等。

join

封鎖,直到與呼叫物件相關聯之執行的執行緒完成為止。

void join();

備註

如果呼叫成功,則呼叫對象的後續呼叫get_id會傳回與任何現有線程相等thread::id的預設值thread::id;如果呼叫不成功,則傳get_id回的值不會變更。

joinable

指定是否「可加入」相關聯的執行緒。

bool joinable() const noexcept;

傳回值

true 如果相關聯的線程可聯結,則為 ;否則為 false

備註

如果 get_id() != id()為,線程對像是可聯結的。

native_handle

傳回代表執行緒控制代碼的實作特定類型。 您可以利用實作特定的方式來使用執行緒控制代碼。

native_handle_type native_handle();

傳回值

native_handle_type 會定義為 Win32 HANDLE,這會轉換為 void *

thread::operator=

將指定物件的執行緒關聯至目前的物件。

thread& operator=(thread&& Other) noexcept;

參數

Other
thread 物件。

傳回值

*this

備註

如果呼叫物件是可加入的,方法即會呼叫 detach。

建立關聯之後,會將 Other 設為預設建構狀態。

swap

與指定 thread 物件的狀態交換物件狀態。

void swap(thread& Other) noexcept;

參數

Other
thread 物件。

thread 建構函式

建構 thread 物件。

thread() noexcept;
template <class Fn, class... Args>
explicit thread(Fn&& F, Args&&... A);

thread(thread&& Other) noexcept;

參數

F
由執行緒執行的應用程式定義函式。

A
要傳遞至 F 的引數清單。

Other
現有的 thread 物件。

備註

第一個建構函式會建構未關聯至執行之執行緒的物件。 針對建構物件呼叫 get_id 所傳回的值是 thread::id()

第二個建構函式會建構與執行新線程相關聯的 物件,並執行 中<functional>定義的虛擬函式INVOKE。 如果沒有足夠的資源可以啟動新的線程,函式會 system_error 擲回具有 錯誤碼的物件 resource_unavailable_try_again。 如果的 F 呼叫以未攔截的例外狀況終止, terminate 則會呼叫 。

第三個建構函式會建構與 Other 相關聯之執行緒相關聯的物件。 接著會將 Other 設為預設建構狀態。

另請參閱

標頭檔參考
<thread>