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 Ausführungsthread und ruft das aufrufbare Objekt in diesem threadAufruf auf. Thread Objekte können verschoben, aber nicht kopiert werden. Aus diesem Grund kann ein Thread der Ausführung nur einem thread Objekt zugeordnet werden.

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. Bei einem standardmäßig konstruierten thread Objekt gibt die thread::get_id Methode ein Objekt zurück, das einen Wert aufweist, der für alle standardmäßig konstruierten thread Objekte identisch ist und sich von dem Wert unterscheidet, der this_thread::get_id für jeden Thread der Ausführung zurückgegeben wird, der zum Zeitpunkt des Aufrufs verknüpft 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 Anruf an detach, nachfolgende Aufrufe, die zurückgegeben idwerden 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 oder nicht gut definiert ist, gibt diese Methode 0 zurück.

Microsoft-spezifisch

hardware_concurrency wird zurzeit 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.

Bei 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 einen vorhandenen 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 verläuft, geben nachfolgende Aufrufe get_id für das aufrufende Objekt einen Standardwert thread::id zurück, der nicht mit dem thread::id vorhandenen Thread verglichen wird. Wenn der Aufruf nicht erfolgreich ist, ist der von diesem 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; falseandernfalls .

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 Ausführungsthread zugeordnet ist, und führt die Pseudofunktion INVOKE aus, die in <functional>definiert ist. Wenn nicht genügend Ressourcen verfügbar sind, um einen neuen Thread zu starten, löst die Funktion ein system_error Objekt aus, das über einen Fehlercode von resource_unavailable_try_again. Wenn der Aufruf, der F mit einer Ausnahme ohne Ausrufe beendet wird, terminate aufgerufen wird.

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>