thread-Klasse

Definiert ein Objekt, das zum Überwachen und Verwalten eines Ausführungsthreads innerhalb einer Anwendung verwendet wird.

Syntax

class thread;

Bemerkungen

Sie können ein thread-Objekt zum Überwachen und Verwalten eines Ausführungsthreads innerhalb einer Anwendung verwenden. Ein thread Objekt, das mithilfe des Standardkonstruktors erstellt wird, ist keinem Thread der Ausführung zugeordnet. Ein thread Objekt, das mithilfe eines aufrufbaren Objekts erstellt wird, erstellt einen neuen Thread der Ausführung und ruft das aufrufbare Objekt in diesem threadAufruf auf. Thread Objekte können verschoben werden, aber nicht kopiert werden, weshalb ein Thread der Ausführung nur einem thread Objekt zugeordnet werden kann.

Jeder Ausführungsthread besitzt einen eindeutigen Bezeichner des Typs thread::id. Die this_thread::get_id-Funktion gibt den Bezeichner des aufrufenden Threads zurück. Die Memberfunktion thread::get_id gibt den Bezeichner des Threads zurück, der von einem thread Objekt verwaltet wird. Für ein standardmäßig erstelltes thread Objekt gibt die thread::get_id Methode ein Objekt zurück, das einen Wert aufweist, der für alle standardmäßig erstellten thread Objekte identisch ist und sich von dem wert unterscheidet, der für jeden Thread der Ausführung zurückgegeben this_thread::get_id wird, der zum Zeitpunkt des Aufrufs verbunden werden kann.

Member

Öffentliche Klassen

Name BESCHREIBUNG
id Identifiziert den zugeordneten Thread eindeutig.

Öffentliche Konstruktoren

name BESCHREIBUNG
thread Erstellt ein thread-Objekt.

Öffentliche Methoden

name BESCHREIBUNG
detach Trennt den zugeordneten Thread vom thread-Objekt.
get_id Gibt den eindeutigen Bezeichner des zugeordneten Threads zurück.
hardware_concurrency Statisch. Gibt eine Schätzung der Anzahl von Hardwarethreadkontexten zurück.
join Blockiert, bis der zugeordnete Thread abgeschlossen ist.
joinable Gibt an, ob dem zugehörigen Thread beigetreten werden kann.
native_handle Gibt den implementierungsspezifischen Typ zurück, der das Threadhandle darstellt.
swap Tauscht den Objektzustand mit einem angegebenen thread-Objekt aus.

Öffentliche Operatoren

Name BESCHREIBUNG
thread::operator= Weist einem Thread das aktuelle thread-Objekt zu.

Anforderungen

Header:<thread>

Namespace:std

detach

Trennt den zugeordneten Thread. Das Betriebssystem wird zum Freigeben von Threadressourcen zuständig.

void detach();

Bemerkungen

Nach einem Aufruf an detach, anschließende Anrufe, die zurückgegeben werden idsollenget_id.

Wenn der Thread, der dem aufrufenden Objekt zugeordnet ist, nicht verknüpft ist, löst die Funktion einen system_error Fehlercode aus invalid_argument.

Wenn der Thread, der dem aufrufenden Objekt zugeordnet ist, ungültig ist, löst die Funktion einen system_error mit Fehlercode no_such_process aus.

get_id

Gibt den eindeutigen Bezeichner für den zugeordneten Threads zurück.

id get_id() const noexcept;

Rückgabewert

Ein id Objekt, das den zugeordneten Thread eindeutig identifiziert oder id() wenn kein Thread dem Objekt zugeordnet ist.

hardware_concurrency

Statische Methode, diet eine Schätzung der Anzahl von Hardwarethreadkontexten zurückgibt.

static unsigned int hardware_concurrency() noexcept;

Rückgabewert

Eine Schätzung der Anzahl von Hardwarethreadkontexten. Wenn der Wert nicht berechnet werden kann oder nicht gut definiert ist, gibt diese Methode 0 zurück.

Microsoft-spezifisch

hardware_concurrency wird derzeit definiert, um die Anzahl der logischen Prozessoren zurückzugeben, die der Anzahl der Hardwarethreads entspricht, die gleichzeitig ausgeführt werden können. Es berücksichtigt die Anzahl der physischen Prozessoren, die Anzahl der Kerne in jedem physischen Prozessor und gleichzeitiges Multithreading auf jedem einzelnen Kern.

Auf Systemen mit mehr als 64 logischen Prozessoren wird diese Zahl jedoch durch die Anzahl der logischen Prozessoren in einer einzigen Gruppe begrenzt; siehe Prozessorgruppen.

id-Klasse

Stellt einen eindeutigen Bezeichner für jeden Thread der Ausführung im Prozess bereit.

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

Bemerkungen

Der Standardkonstruktor erstellt ein Objekt, das nicht mit dem thread::id Objekt für vorhandene Thread vergleicht.

Alle mit dem Standwert konstruierten thread::id-Objekte gelten als gleich.

join

Blockiert, bis der Thread der Ausführung, der das aufrufende Objekt zugeordnet wurde, abgeschlossen ist.

void join();

Bemerkungen

Wenn der Aufruf erfolgreich ist, geben nachfolgende get_id Aufrufe für das aufrufende Objekt einen Standard thread::id zurück, der nicht mit dem thread::id vorhandenen Thread verglichen wird. Wenn der Aufruf nicht erfolgreich ist, ist der von ihm zurückgegebene get_id Wert unverändert.

joinable

Gibt an, ob dem zugehörigen Thread beigetreten werden kann.

bool joinable() const noexcept;

Rückgabewert

true wenn der zugeordnete Thread verknüpft ist; andernfalls false.

Bemerkungen

Einem Thread-Objekt kann beigetreten werden, wenn get_id() != id().

native_handle

Gibt den implementierungsspezifischen Typ zurück, der das Threadhandle darstellt. Das Threadhandle kann je nach Implementierung auf die jeweils entsprechende Weise verwendet werden.

native_handle_type native_handle();

Rückgabewert

native_handle_type ist als Win32-HANDLE definiert, das als void * umgewandelt wird.

thread::operator=

Ordnet den Thread für das angegebene Objekt dem aktuellen Objekt zu.

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

Parameter

Other
Ein thread-Objekt.

Rückgabewert

*this

Bemerkungen

Die Methodenaufrufe trennen, wenn dem aufrufenden Objekt beigetreten werden kann.

Nach dem Erstellen die Zuordnung wird Other auf einen standardmäßig konstruierten Zustand festgelegt.

swap

Tauscht den Objektzustand mit dem eines angegebenen thread-Objekts aus.

void swap(thread& Other) noexcept;

Parameter

Other
Ein thread-Objekt.

thread-Konstruktor

Erstellt ein thread-Objekt.

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

thread(thread&& Other) noexcept;

Parameter

F
Eine anwendungsdefinierte Funktion, die vom Thread ausgeführt werden soll.

A
Eine Liste von Argumenten, die an F übergeben werden sollen.

Other
Ein vorhandenes thread-Objekt.

Bemerkungen

Der erste Konstruktor erstellt ein Objekt, das nicht einem Thread der Ausführung zugeordnet ist. Der Wert, der durch einen Aufruf von get_id für das erstellte Objekt zurückgegeben wird, ist thread::id().

Der zweite Konstruktor erstellt ein Objekt, das einem neuen Thread der Ausführung zugeordnet ist und die Pseudofunktion INVOKE ausführt, die in <functional>definiert ist. Wenn nicht genügend Ressourcen verfügbar sind, um einen neuen Thread zu starten, löst die Funktion ein Objekt aus, das über einen system_error Fehlercode verfügt resource_unavailable_try_again. Wenn der Aufruf, der F mit einer Ausnahme von uncaught beendet wird, beendet wird, terminate wird aufgerufen.

Der dritte Konstruktor erstellt ein Objekt, das mit dem Thread verknüpft ist, der Other zugeordnet ist. Other wird dann auf einen standardmäßig konstruierten Zustand festgelegt.

Siehe auch

Headerdateienreferenz
<thread>