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.
Dołącz nagłówek <mutex> standardowy do zdefiniowania klas mutex, , timed_mutexrecursive_mutexi recursive_timed_mutex; szablonów lock_guard oraz unique_locktypów pomocniczych i funkcji definiujących regiony kodu wzajemnego wykluczania.
Ostrzeżenie
Począwszy od programu Visual Studio 2015, typy synchronizacji biblioteki standardowej języka C++ są oparte na typach pierwotnych synchronizacji systemu Windows i nie używają już narzędzia ConcRT (z wyjątkiem sytuacji, gdy platforma docelowa to Windows XP). Typy zdefiniowane w programie <mutex> nie powinny być używane z żadnymi typami lub funkcjami ConcRT.
Wymagania
Nagłówek: <mutex>
Przestrzeń nazw: std
Uwagi
Uwaga
W kodzie skompilowanym przy użyciu polecenia /clrten nagłówek jest blokowany.
Klasy mutex i recursive_mutex są typami mutex. Typ mutex ma konstruktor domyślny i destruktor, który nie zgłasza wyjątków. Te obiekty mają metody, które zapewniają wzajemne wykluczenie, gdy wiele wątków próbuje zablokować ten sam obiekt. W szczególności typ mutex zawiera metody lock, try_locki unlock:
Metoda
lockblokuje wątek wywołujący, dopóki wątek nie uzyska własności mutexu. Jego wartość zwracana jest ignorowana.Metoda
try_lockpróbuje uzyskać własność mutexu bez blokowania. Jego zwracany typ jest konwertowany nabooli jesttrue, jeśli metoda uzyskuje własność, ale w przeciwnym raziefalse.Metoda
unlockzwalnia własność mutexu z wątku wywołującego.
Typy mutex można używać jako argumentów typu, aby utworzyć wystąpienie szablonów lock_guard i unique_lock. Można użyć obiektów tych typów jako Lock argumentu do funkcji składowych oczekiwania w szablonie condition_variable_any.
Typ mutexu czasowego spełnia wymagania dotyczące typu mutex. Ponadto ma try_lock_for metody i try_lock_until , które muszą być wywoływane przy użyciu jednego argumentu i muszą zwrócić typ, który jest konwertowany na bool. Typ mutexu czasowego może definiować te funkcje przy użyciu dodatkowych argumentów, pod warunkiem że wszystkie te dodatkowe argumenty mają wartości domyślne.
Metoda
try_lock_formusi być wywoływana przy użyciu jednego argumentuchrono::duration,Rel_timektórego typem jest wystąpienie klasy . Metoda próbuje uzyskać własność mutexu, ale zwraca wartość w czasie wyznaczonym przezRel_timemetodę , niezależnie od powodzenia. Wartość zwracana jest konwertowana natruewartość , jeśli metoda uzyskuje własność. W przeciwnym razie zwracana wartość jest konwertowana nafalsewartość .Metoda
try_lock_untilmusi być wywoływana przy użyciu jednego argumentuchrono::time_point,Abs_timektórego typem jest wystąpienie klasy . Metoda próbuje uzyskać własność mutexu, ale zwraca nie później niż czas wyznaczony przezAbs_time, niezależnie od powodzenia. Wartość zwracana jest konwertowana natruewartość , jeśli metoda uzyskuje własność. W przeciwnym razie zwracana wartość jest konwertowana nafalsewartość .
Typ mutex jest również nazywany typem zablokowanym. Jeśli nie udostępnia funkcji try_lockskładowej, jest to podstawowy typ blokady. Typ mutexu czasowego jest znany jako typ czasowy, który można zablokować. Czasowe bloki typu zablokowanego przez określony czas lub do momentu uzyskania blokady na mutexu.
Elementy członkowskie
Klasy
| Nazwa/nazwisko | opis |
|---|---|
lock_guard Klasa |
Reprezentuje szablon, który może zostać utworzony w celu utworzenia obiektu, którego destruktor odblokuje mutex. |
mutex Klasa (Standardowa biblioteka C++) |
Reprezentuje typ mutexu. Użyj obiektów tego typu, aby wymusić wzajemne wykluczenie w programie. |
recursive_mutex Klasa |
Reprezentuje typ mutexu. W przeciwieństwie do mutex klasy zachowanie wywoływania metod blokowania dla obiektów, które są już zablokowane, jest dobrze zdefiniowane. |
recursive_timed_mutex Klasa |
Użyj obiektów tego typu, aby wymusić wzajemne wykluczenie, które ma ograniczone czasowo blokowanie w programie. W przeciwieństwie do timed_mutexmetody , efekt wywoływania metod blokowania dla recursive_timed_mutex obiektów jest dobrze zdefiniowany. |
scoped_lock Klasa |
|
timed_mutex Klasa |
Użyj obiektów tego typu, aby wymusić wzajemne wykluczenie, które ma ograniczone czasowo blokowanie w programie. |
unique_lock Klasa |
Reprezentuje szablon, który może zostać utworzony w celu utworzenia obiektów, które zarządzają blokowaniem i odblokowywaniem mutexu. |
Funkcje
| Nazwa/nazwisko | opis |
|---|---|
call_once |
Udostępnia mechanizm wywoływania określonego obiektu wywołującego dokładnie raz podczas wykonywania. |
lock |
Próbuje zablokować wszystkie argumenty bez zakleszczenia. |
swap |
Próbuje wymienić wewnętrzne stany dwóch mutex obiektów i x y. |
try_lock |
Próbuje zablokować zablokowany obiekt. Zwraca natychmiast. |
Struktury
| Nazwa/nazwisko | opis |
|---|---|
adopt_lock_t Struktura |
Reprezentuje typ używany do definiowania elementu adopt_lock. |
defer_lock_t Struktura |
Reprezentuje typ, który definiuje defer_lock obiekt używany do wybierania jednego z przeciążonych konstruktorów klasy unique_lock. |
once_flag Struktura |
Reprezentuje element struct używany z funkcją call_once szablonu w celu zapewnienia, że kod inicjowania jest wywoływany tylko raz, nawet w obecności wielu wątków wykonywania. |
try_to_lock_t Struktura |
Reprezentuje obiekt struct , który definiuje try_to_lock obiekt i służy do wybierania jednego z przeciążonych konstruktorów klasy unique_lock. |
Zmienne
| Nazwa/nazwisko | opis |
|---|---|
adopt_lock |
Reprezentuje obiekt, który można przekazać do konstruktorów i lock_guard unique_lock wskazać, że mutex obiekt, który jest również przekazywany do konstruktora, jest zablokowany. |
defer_lock |
Reprezentuje obiekt, który można przekazać do konstruktora dla unique_lockelementu , aby wskazać, że konstruktor nie powinien blokować mutex obiektu, który jest również przekazywany do niego. |
try_to_lock |
Reprezentuje obiekt, który można przekazać do konstruktora, unique_lock aby wskazać, że konstruktor powinien spróbować odblokować mutex obiekt, który jest również przekazywany do niego bez blokowania. |