thread Klasa

Definiuje obiekt, który jest używany do obserwowania i zarządzania wątkiem wykonywania w obrębie aplikacji.

Składnia

class thread;

Uwagi

Za pomocą thread obiektu można obserwować wątek wykonywania w aplikacji i zarządzać nim. Obiekt thread utworzony przy użyciu konstruktora domyślnego nie jest skojarzony z żadnym wątkiem wykonywania. Obiekt thread skonstruowany przy użyciu obiektu wywołującego tworzy nowy wątek wykonywania i wywołuje obiekt wywołujący w tym threadobiekcie . Thread Obiekty można przenosić, ale nie kopiować, dlatego wątek wykonywania może być skojarzony tylko z jednym thread obiektem.

Każdy wątek wykonywania ma unikatowy identyfikator typu thread::id. Funkcja this_thread::get_id zwraca identyfikator wywołującego wątku. Funkcja thread::get_id składowa zwraca identyfikator wątku zarządzanego thread przez obiekt. W przypadku obiektu thread::get_id skonstruowanego thread domyślnie metoda zwraca obiekt, który ma tę samą wartość dla wszystkich obiektów utworzonych thread domyślnie i różni się od wartości zwracanej przez this_thread::get_id dowolny wątek wykonywania, który może zostać sprzężony w momencie wywołania.

Członkowie

Klasy publiczne

Nazwa/nazwisko opis
id Jednoznacznie identyfikuje skojarzony wątek.

Konstruktory publiczne

Nazwa/nazwisko opis
thread thread Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
detach Odłącza skojarzony wątek od thread obiektu.
get_id Zwraca unikatowy identyfikator skojarzonego wątku.
hardware_concurrency Statyczne. Zwraca szacunkową liczbę kontekstów wątków sprzętu.
join Blokuje, aż do zakończenia skojarzonego wątku.
joinable Określa, czy skojarzony wątek podlega sprzęganiu.
native_handle Zwraca typ zależny od implementacji, który reprezentuje dojście wątku.
swap Zamienia stan obiektu na określony thread obiekt.

Operatory publiczne

Nazwa/nazwisko opis
thread::operator= Kojarzy wątek z bieżącym thread obiektem.

Wymagania

Nagłówka:<thread>

Obszaru nazw:std

detach

Odłącza skojarzony wątek. System operacyjny staje się odpowiedzialny za wydawanie zasobów wątków po zakończeniu.

void detach();

Uwagi

Po wywołaniu metody detachdo programu kolejne wywołania w celu get_id zwrócenia idpolecenia .

Jeśli wątek skojarzony z obiektem wywołującym nie jest możliwy do sprzężenia, funkcja zgłasza system_error kod invalid_argumentbłędu .

Jeśli wątek skojarzony z obiektem wywołującym jest nieprawidłowy, funkcja zgłasza system_error kod błędu no_such_process.

get_id

Zwraca unikatowy identyfikator skojarzonego wątku.

id get_id() const noexcept;

Wartość zwracana

id Obiekt, który jednoznacznie identyfikuje skojarzony wątek lub id() jeśli żaden wątek nie jest skojarzony z obiektem.

hardware_concurrency

Metoda statyczna zwracająca oszacowanie liczby kontekstów wątków sprzętowych.

static unsigned int hardware_concurrency() noexcept;

Wartość zwracana

Oszacowanie liczby kontekstów wątków sprzętowych. Jeśli nie można obliczyć wartości lub nie jest dobrze zdefiniowana, ta metoda zwraca wartość 0.

Specyficzne dla firmy Microsoft

hardware_concurrency Program jest obecnie zdefiniowany w celu zwrócenia liczby procesorów logicznych, co odpowiada liczbie wątków sprzętowych, które mogą być wykonywane jednocześnie. Uwzględnia liczbę procesorów fizycznych, liczbę rdzeni w każdym procesorze fizycznym i jednoczesne wielowątkowość na każdym rdzeniu.

Jednak w systemach z więcej niż 64 procesorami logicznymi ta liczba jest ograniczona przez liczbę procesorów logicznych w jednej grupie; zobacz Grupy procesorów.

Klasa id

Udostępnia unikatowy identyfikator dla każdego wątku wykonywania w procesie.

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

Uwagi

Domyślny konstruktor tworzy obiekt, który nie jest porównywany z obiektem thread::id dla żadnego istniejącego wątku.

Wszystkie obiekty skonstruowane thread::id domyślnie są równe.

join

Blokuje do momentu ukończenia wątku wykonywania skojarzonego z obiektem wywołującym.

void join();

Uwagi

Jeśli wywołanie powiedzie się, kolejne wywołania get_id obiektu wywołującego zwracają wartość domyślną thread::id , która nie jest porównywana z thread::id żadnym istniejącym wątkiem; jeśli wywołanie nie powiedzie się, wartość zwrócona przez get_id element jest niezmieniona.

joinable

Określa, czy skojarzony wątek podlega sprzęganiu.

bool joinable() const noexcept;

Wartość zwracana

true jeśli skojarzony wątek jest sprzężony; w przeciwnym razie, false.

Uwagi

Obiekt wątku można sprzężyć, jeśli get_id() != id().

native_handle

Zwraca typ zależny od implementacji, który reprezentuje dojście wątku. Uchwyt wątku może być używany w sposób specyficzny dla implementacji.

native_handle_type native_handle();

Wartość zwracana

native_handle_type jest definiowany jako win32 HANDLE , który jest rzutowane jako void *.

thread::operator=

Kojarzy wątek określonego obiektu z bieżącym obiektem.

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

Parametry

Other
Obiekt thread.

Wartość zwracana

*this

Uwagi

Metoda wywołuje metodę odłączenia, jeśli obiekt wywołujący jest sprzężony.

Po utworzeniu Other skojarzenia jest ustawiona wartość stanu domyślnego.

swap

Zamienia stan obiektu na thread określony obiekt.

void swap(thread& Other) noexcept;

Parametry

Other
Obiekt thread.

thread Konstruktor

thread Tworzy obiekt.

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

thread(thread&& Other) noexcept;

Parametry

F
Funkcja zdefiniowana przez aplikację, która ma być wykonywana przez wątek.

A
Lista argumentów, które mają zostać przekazane do Felementu .

Other
Istniejący thread obiekt.

Uwagi

Pierwszy konstruktor tworzy obiekt, który nie jest skojarzony z wątkiem wykonywania. Wartość zwracana przez wywołanie get_id obiektu skonstruowanego to thread::id().

Drugi konstruktor konstruuje obiekt skojarzony z nowym wątkiem wykonywania i wykonuje pseudo-funkcję INVOKE zdefiniowaną w pliku <functional>. Jeśli za mało zasobów jest dostępnych do uruchomienia nowego wątku, funkcja zgłasza system_error obiekt, który zawiera kod błędu resource_unavailable_try_again. Jeśli wywołanie metody w celu F zakończenia z nieuchwyconym wyjątkiem, terminate jest wywoływane.

Trzeci konstruktor tworzy obiekt skojarzony z wątkiem skojarzonym z elementem Other. Other parametr jest następnie ustawiany na stan domyślny.

Zobacz też

Odwołanie do plików nagłówka
<thread>