Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Definierar ett objekt som används för att observera och hantera en tråd med körning i ett program.
Syntax
class thread;
Anmärkningar
Du kan använda ett thread-objekt för att observera och hantera en körningstråd i ett program. Ett thread objekt som skapas med hjälp av standardkonstruktorn är inte associerat med någon körningstråd. Ett thread objekt som skapas med hjälp av ett anropsbart objekt skapar en ny körningstråd och anropar det anropbara objektet i den thread.
Thread objekt kan flyttas men inte kopieras, vilket är anledningen till att en körningstråd bara kan associeras med ett thread objekt.
Varje körningstråd har en unik identifierare av typen thread::id. Funktionen this_thread::get_id returnerar identifieraren för den anropande tråden. Medlemsfunktionen thread::get_id returnerar identifieraren för tråden som hanteras av ett thread objekt. För ett standardkonstruerat thread-objekt returnerar metoden thread::get_id ett objekt som har ett värde som är detsamma för alla standardkonstruerade thread objekt och skiljer sig från det värde som returneras av this_thread::get_id för alla körningstrådar som kan kopplas vid tidpunkten för anropet.
Medlemmar
Offentliga klasser
| Namn | Beskrivning |
|---|---|
id |
Identifierar den associerade tråden unikt. |
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
thread |
Konstruerar ett thread objekt. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
detach |
Kopplar bort den associerade tråden från thread-objektet. |
get_id |
Returnerar den associerade trådens unika identifierare. |
hardware_concurrency |
Statisk. Returnerar en uppskattning av antalet maskinvarutrådskontexter. |
join |
Blockerar tills den associerade tråden har slutförts. |
joinable |
Anger om den associerade tråden är kopplingsbar. |
native_handle |
Returnerar den implementeringsspecifika typ som representerar trådhandtaget. |
swap |
Växlar objekttillståndet med ett angivet thread objekt. |
Offentliga operatörer
| Namn | Beskrivning |
|---|---|
thread::operator= |
Associerar en tråd med det aktuella thread objektet. |
Krav
rubrik:<thread>
namnområde:std
detach
Kopplar från den associerade tråden. Operativsystemet blir ansvarigt för att frigöra trådresurser vid avslutning.
void detach();
Anmärkningar
Efter ett anrop till detachreturnerar efterföljande anrop till get_idid.
Om tråden som är associerad med det anropande objektet inte är kopplingsbar, genererar funktionen en system_error som har en felkod för invalid_argument.
Om tråden som är associerad med det anropande objektet är ogiltig, genererar funktionen en system_error som har en felkod för no_such_process.
get_id
Returnerar en unik identifierare för den associerade tråden.
id get_id() const noexcept;
Returvärde
Ett id objekt som unikt identifierar den associerade tråden eller id() om ingen tråd är associerad med objektet.
hardware_concurrency
Statisk metod som returnerar en uppskattning av antalet maskinvarutrådskontexter.
static unsigned int hardware_concurrency() noexcept;
Returvärde
En uppskattning av antalet maskinvarutrådskontexter. Om värdet inte kan beräknas eller inte är väldefinierat returnerar den här metoden 0.
Microsoft-specifika
hardware_concurrency returnerar antalet logiska processorer, vilket motsvarar antalet maskinvarutrådar som kan köras samtidigt. Det tar hänsyn till antalet fysiska processorer, antalet kärnor i varje fysisk processor och samtidig multitrådning på varje enskild kärna.
Före Windows 11 och Windows Server 2022 begränsades programmen som standard till en enda processorgrupp med högst 64 logiska processorer. Detta begränsade antalet trådar som körs samtidigt till 64. Mer information finns i processorgrupper.
Från och med Windows 11 och Windows Server 2022 har processer och deras trådar processortillhörighet som som standard sträcker sig över alla processorer i systemet och över flera grupper på datorer med mer än 64 processorer. Gränsen för antalet samtidiga trådar är nu det totala antalet logiska processorer i systemet.
id klass
Tillhandahåller en unik identifierare för varje körningstråd i processen.
class thread::id {
id() noexcept;
};
Anmärkningar
Standardkonstruktorn skapar ett objekt som inte jämförs med det thread::id objektet för en befintlig tråd.
Alla standardkonstruerade thread::id objekt jämför lika med.
join
Blockerar tills körningstråden som är associerad med det anropande objektet har slutförts.
void join();
Anmärkningar
Om anropet lyckas returnerar efterföljande anrop till get_id för det anropande objektet en standard thread::id som inte är lika med thread::id för en befintlig tråd. Om anropet inte lyckas ändras värdet som returneras av get_id.
joinable
Anger om den associerade tråden är kopplingsbar.
bool joinable() const noexcept;
Returvärde
true om den associerade tråden är kopplingsbar. annars false.
Anmärkningar
Ett trådobjekt kan kopplas om get_id() != id().
native_handle
Returnerar den implementeringsspecifika typ som representerar trådhandtaget. Trådhandtaget kan användas på implementeringsspecifika sätt.
native_handle_type native_handle();
Returvärde
native_handle_type definieras som en Win32-HANDLE cast som void *.
thread::operator=
Associerar tråden för ett angivet objekt med det aktuella objektet.
thread& operator=(thread&& Other) noexcept;
Parametrar
Other
Ett thread objekt.
Returvärde
*this
Anmärkningar
Metoden anropar koppla från om det anropande objektet är kopplingsbart.
När associationen har skapats anges Other till ett standardkonstruerat tillstånd.
swap
Växlar objekttillståndet med ett angivet thread objekt.
void swap(thread& Other) noexcept;
Parametrar
Other
Ett thread objekt.
thread konstruktor
Konstruerar ett thread objekt.
thread() noexcept;
template <class Fn, class... Args>
explicit thread(Fn&& F, Args&&... A);
thread(thread&& Other) noexcept;
Parametrar
F
En programdefinierad funktion som ska köras på tråden.
A
En lista med argument som ska skickas till F.
Other
Ett befintligt thread objekt.
Anmärkningar
Den första konstruktorn konstruerar ett objekt som inte är associerat med en körningstråd. Värdet som returneras av get_id för det konstruerade objektet är thread::id().
Den andra konstruktorn konstruerar ett objekt som är associerat med en ny körningstråd. Den kör pseudofunktionen INVOKE definierad i <functional>. Om det inte finns tillräckligt med resurser för att starta en ny tråd genererar funktionen ett system_error objekt med felkoden resource_unavailable_try_again. Om anropet till F avslutas med ett undantagsfel anropas terminate. Anropet till F får inte leda till att tråden avslutas i förtid, till exempel genom att anropa ExitThread eller _endthreadex.
Den tredje konstruktorn konstruerar ett objekt som är associerat med tråden som är associerad med Other.
Other anges sedan till ett standardkonstruerat tillstånd.
Se även
referens för huvudfiler
<thread>