Partager via


La classe thread

Définit un objet qui sert à observer et à gérer un thread d’exécution dans une application.

Syntaxe

class thread;

Notes

Vous pouvez utiliser un objet thread pour observer et gérer un thread d’exécution dans une application. Un thread objet créé à l’aide du constructeur par défaut n’est associé à aucun thread d’exécution. Un thread objet construit à l’aide d’un objet pouvant être appelé crée un thread d’exécution et appelle l’objet pouvant être appelé dans ce thread. Thread les objets peuvent être déplacés, mais non copiés, c’est pourquoi un thread d’exécution peut être associé à un thread seul objet.

Chaque thread d’exécution possède un identificateur unique de type thread::id. La fonction this_thread::get_id retourne l’identificateur du thread appelant. La fonction thread::get_id membre retourne l’identificateur du thread géré par un thread objet. Pour un objet construit thread par défaut, la thread::get_id méthode retourne un objet qui a une valeur identique pour tous les objets construits thread par défaut et différent de la valeur retournée par this_thread::get_id n’importe quel thread d’exécution pouvant être joint au moment de l’appel.

Membres

Classes publiques

Nom Description
id Identifie de façon unique le thread associé.

Constructeurs publics

Nom Description
thread Construit un objet thread.

Méthodes publiques

Nom Description
detach Détache le thread associé de l’objet thread.
get_id Retourne l’identificateur unique du thread associé.
hardware_concurrency Statique. Retourne une estimation du nombre de contextes de thread matériel.
join Bloque jusqu’à ce que le thread associé soit terminé.
joinable Spécifie si le thread associé est joignable.
native_handle Retourne le type propre à l’implémentation qui représente le descripteur de thread.
swap Permute l’état de l’objet avec un objet thread spécifié.

Opérateurs publics

Nom Description
thread::operator= Associe un thread avec l’objet thread en cours.

Spécifications

En-tête : <thread>

Espace de noms : std

detach

Détache le thread associé. Le système d’exploitation devient responsable de la libération des ressources de thread lors d’un arrêt.

void detach();

Notes

Après un appel à detach, les appels suivants pour get_id retourner id.

Si le thread associé à l’objet appelant n’est pas joignable, la fonction lève un system_error code d’erreur .invalid_argument

Si le thread qui est associé à l’objet appelant est non valide, la fonction lève un objet system_error dotée du code d’erreur no_such_process.

get_id

Retourne un identificateur unique du thread associé.

id get_id() const noexcept;

Valeur de retour

Objet id qui identifie de façon unique le thread associé ou id() si aucun thread n’est associé à l’objet.

hardware_concurrency

Méthode statique qui retourne une estimation du nombre de contextes de thread matériel.

static unsigned int hardware_concurrency() noexcept;

Valeur de retour

Une estimation du nombre de contextes de thread matériel. Si la valeur ne peut pas être calculée ou n’est pas bien définie, cette méthode retourne 0.

Section spécifique à Microsoft

hardware_concurrency est actuellement défini pour retourner le nombre de processeurs logiques, qui correspond au nombre de threads matériels pouvant s’exécuter simultanément. Il prend en compte le nombre de processeurs physiques, le nombre de cœurs dans chaque processeur physique et le multithreading simultané sur chaque cœur unique.

Toutefois, sur les systèmes avec plus de 64 processeurs logiques, ce nombre est limité par le nombre de processeurs logiques dans un seul groupe ; consultez Groupes de processeurs.

Classe id

Fournit un identificateur unique pour chaque thread d’exécution dans le processus.

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

Notes

Le constructeur par défaut crée un objet qui ne correspond pas à l’objet thread::id d’un thread existant.

Tous les objets thread::id construits par défaut sont considérés comme égaux.

join

Bloque jusqu’à ce que le thread d’exécution associé à l’objet appelant soit terminé.

void join();

Notes

Si l’appel réussit, les appels suivants pour get_id l’objet appelant retournent une valeur par défaut thread::id qui ne correspond pas à celle thread::id d’un thread existant ; si l’appel ne réussit pas, la valeur retournée par get_id est inchangée.

joinable

Spécifie si le thread associé est joignable.

bool joinable() const noexcept;

Valeur de retour

true si le thread associé est joignable ; sinon, false.

Notes

Un objet thread est joignable si get_id() != id().

native_handle

Retourne le type propre à l’implémentation qui représente le descripteur de thread. Vous pouvez utiliser le descripteur de thread de plusieurs manières propres à l’implémentation.

native_handle_type native_handle();

Valeur de retour

native_handle_type est défini comme un HANDLE Win32 converti en void *.

thread::operator=

Associe le thread d’un objet spécifié à l’objet en cours.

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

Paramètres

Other
Objet thread.

Valeur de retour

*this

Notes

La méthode appelle detach si l’objet appelant est joignable.

Une fois l’association établie, Other est défini à un état construit par défaut.

swap

Permute l’état de l’objet avec celui d’un objet thread spécifié.

void swap(thread& Other) noexcept;

Paramètres

Other
Objet thread.

Constructeur thread

Construit un objet thread.

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

thread(thread&& Other) noexcept;

Paramètres

F
Une fonction définie par l’application doit être exécutée par le thread.

A
Liste d’arguments à passer à F.

Other
Objet thread existant.

Notes

Le premier constructeur construit un objet qui n’est pas associé à un thread d’exécution. La valeur retournée par un appel à get_id pour l’objet construit est thread::id().

Le deuxième constructeur construit un objet associé à un nouveau thread d’exécution et exécute la pseudo-fonction INVOKE définie dans <functional>. Si vous ne disposez pas de suffisamment de ressources pour démarrer un nouveau thread, la fonction lève un system_error objet dont le code d’erreur est resource_unavailable_try_again. Si l’appel à F se terminer par une exception non interceptée est terminate appelé.

Le troisième constructeur construit un objet associé au thread qui est associé à Other. Other est ensuite défini à un état construit par défaut.

Voir aussi

Informations de référence sur les fichiers d’en-tête
<thread>