Sdílet prostřednictvím


thread Třída

Definuje objekt, který umožňuje sledovat a spravovat vlákno provádění v rámci aplikace.

Syntaxe

class thread;

Poznámky

Pomocí objektu thread můžete sledovat a spravovat vlákno provádění v rámci aplikace. Objekt thread vytvořený pomocí výchozího konstruktoru není přidružený k žádnému vláknu provádění. Objekt thread vytvořený pomocí volatelného objektu vytvoří nové vlákno provádění a zavolá volatelný objekt v tom thread. Thread objekty lze přesunout, ale ne zkopírovat, což je důvod, proč lze vlákno provádění přidružit pouze k jednomu thread objektu.

Každé vlákno provádění má jedinečný identifikátor typu thread::id. Funkce this_thread::get_id vrací identifikátor volajícího vlákna. Členská funkce thread::get_id vrátí identifikátor vlákna spravovaného objektem thread . U objektu vytvořeného threadthread::get_id ve výchozím nastavení vrátí metoda objekt, který má hodnotu, která je stejná pro všechny objekty vytvořené thread ve výchozím nastavení a liší se od hodnoty vrácené this_thread::get_id pro jakékoli vlákno provádění, které by bylo možné spojit v době volání.

Členové

Veřejné třídy

Jméno popis
id Jednoznačně identifikuje přidružené vlákno.

Veřejné konstruktory

Jméno popis
thread thread Vytvoří objekt.

Veřejné metody

Jméno popis
detach Odpojte přidružené vlákno od objektu thread .
get_id Vrací jedinečný identifikátor přidruženého vlákna.
hardware_concurrency Statické. Vrací odhadovaný počet kontextů hardwarových vláken.
join Blokuje, dokud se přidružené vlákno nedokončí.
joinable Určuje, zda je přidružené vlákno spojitelné.
native_handle Vrátí typ specifický pro implementaci představující popisovač vlákna.
swap Prohodí stav objektu se zadaným thread objektem.

Veřejné operátory

Jméno popis
thread::operator= Přidruží vlákno k aktuálnímu thread objektu.

Požadavky

Záhlaví:<thread>

Obor názvů:std

detach

Odpojte přidružené vlákno. Operační systém je zodpovědný za uvolnění prostředků vlákna při ukončení.

void detach();

Poznámky

Po volání detach, následná volání vrátit get_idid.

Pokud vlákno přidružené k volajícímu objektu není možné spojit, funkce vyvolá system_error kód invalid_argumentchyby .

Pokud je vlákno přidružené k volajícímu objektu neplatné, funkce vyvolá system_error kód no_such_processchyby .

get_id

Vrátí jedinečný identifikátor přidruženého vlákna.

id get_id() const noexcept;

Vrácená hodnota

Objekt id , který jednoznačně identifikuje přidružené vlákno, nebo id() pokud k objektu není přidruženo žádné vlákno.

hardware_concurrency

Statická metoda, která vrací odhad počtu kontextů hardwarových vláken.

static unsigned int hardware_concurrency() noexcept;

Vrácená hodnota

Odhad počtu kontextů hardwarových vláken Pokud hodnotu nelze vypočítat nebo není dobře definovaná, vrátí tato metoda hodnotu 0.

Specifické pro Microsoft

hardware_concurrency je aktuálně definován tak, aby vracel počet logických procesorů, což odpovídá počtu hardwarových vláken, která se můžou spustit současně. Bere v úvahu počet fyzických procesorů, počet jader v každém fyzickém procesoru a souběžné multithreading na každém jádru.

V systémech s více než 64 logickými procesory je však toto číslo omezeno počtem logických procesorů v jedné skupině; viz Skupiny procesorů.

Třída id

Poskytuje jedinečný identifikátor pro každé vlákno provádění v procesu.

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

Poznámky

Výchozí konstruktor vytvoří objekt, který se nerovná objektu thread::id pro žádné existující vlákno.

Všechny objekty vytvořené thread::id ve výchozím nastavení se porovnávají stejně.

join

Blokuje, dokud se nedokončí vlákno spuštění přidruženého k volajícímu objektu.

void join();

Poznámky

Pokud volání proběhne úspěšně, následná volání get_id volajícího objektu vrátí výchozí thread::id hodnotu, která se nerovná žádnému thread::id existujícímu vláknu. Pokud volání neuspěje, hodnota vrácená objektem get_id se nezmění.

joinable

Určuje, zda je přidružené vlákno spojitelné.

bool joinable() const noexcept;

Vrácená hodnota

truepokud je přidružené vlákno spojitelné; v opačném případě . false

Poznámky

Objekt vlákna je spojitelný, pokud get_id() != id().

native_handle

Vrátí typ specifický pro implementaci představující popisovač vlákna. Popisovač vlákna lze použít v konkrétních způsobech implementace.

native_handle_type native_handle();

Vrácená hodnota

native_handle_type je definován jako Win32 HANDLE , který se přetypuje jako void *.

thread::operator=

Přidruží vlákno zadaného objektu k aktuálnímu objektu.

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

Parametry

Other
Objekt thread .

Vrácená hodnota

*this

Poznámky

Metoda volá odpojení, pokud volající objekt je spojitelný.

Po vytvoření Other přidružení se nastaví výchozí vytvořený stav.

swap

Prohodí stav objektu s daným objektem thread .

void swap(thread& Other) noexcept;

Parametry

Other
Objekt thread .

thread Konstruktor

thread Vytvoří objekt.

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

thread(thread&& Other) noexcept;

Parametry

F
Funkce definovaná aplikací, kterou má vlákno spustit.

A
Seznamargumentch F

Other
Existující objekt thread.

Poznámky

První konstruktor vytvoří objekt, který není přidružen k vláknu provádění. Hodnota vrácená voláním get_id pro vytvořený objekt je thread::id().

Druhý konstruktor vytvoří objekt, který je přidružen k novému vláknu provádění a spustí pseudo-funkci INVOKE , která je definována v <functional>. Pokud není k dispozici dostatek prostředků pro spuštění nového vlákna, funkce vyvolá system_error objekt, který má kód resource_unavailable_try_againchyby . Pokud se volání ukončí F s nezachycenou výjimkou, terminate je volána.

Třetí konstruktor vytvoří objekt, který je přidružen k vláknu, které je přidruženo Other. Other je pak nastaven na výchozí konstruovaný stav.

Viz také

Referenční informace k souborům hlaviček
<thread>