Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 skonstruowanego thread::get_id 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.
Elementy członkowskie
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 |
Statyczny. 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łówek:<thread>
Przestrzeń 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
Obiekt id , 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 Zwraca liczbę procesorów logicznych, która 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.
Przed systemami Windows 11 i Windows Server 2022 aplikacje były domyślnie ograniczone do jednej grupy procesorów, co ma maksymalnie 64 procesory logiczne. Ogranicza to liczbę równoczesnych wątków do 64. Aby uzyskać więcej informacji, zobacz Grupy procesorów.
Począwszy od systemów Windows 11 i Windows Server 2022, procesy i ich wątki mają koligacje procesora, które domyślnie obejmują wszystkie procesory w systemie i w wielu grupach na maszynach z ponad 64 procesorami. Limit liczby równoczesnych wątków jest teraz całkowitą liczbą procesorów logicznych w systemie.
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 zakoń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 rzutowanie Win32 HANDLE 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ę do wykonania w wątku.
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 get_id dla skonstruowanego obiektu to thread::id().
Drugi konstruktor tworzy obiekt skojarzony z nowym wątkiem wykonywania. Wykonuje ona 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. Wywołanie F nie może spowodować przedwczesnego zakończenia wątku, takiego jak wywołanie ExitThread lub _endthreadex.
Trzeci konstruktor tworzy obiekt skojarzony z wątkiem skojarzonym z elementem Other.
Other parametr jest następnie ustawiany na stan domyślny.