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 thread
Aufruf 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 id
sollenget_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.