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 thread
obiekcie . 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 detach
do programu kolejne wywołania w celu get_id
zwrócenia id
polecenia .
Jeśli wątek skojarzony z obiektem wywołującym nie jest możliwy do sprzężenia, funkcja zgłasza system_error
kod invalid_argument
błę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 F
elementu .
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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla