Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Następujące reguły bezpieczeństwa wątków mają zastosowanie do wszystkich klas w standardowej bibliotece języka C++ — obejmuje shared_ptr
to , zgodnie z poniższym opisem. Czasami zapewnia się silniejsze gwarancje — na przykład standardowe obiekty iostream, zgodnie z poniższym opisem, i typy przeznaczone do wielowątku, takie jak te w elem <atomic>
.
Obiekt jest bezpieczny wątkowo do odczytu z wielu wątków. Na przykład, biorąc pod uwagę obiekt A, można bezpiecznie odczytać A z wątku 1 i z wątku 2 jednocześnie.
Jeśli obiekt jest zapisywany przez jeden wątek, wszystkie operacje odczytu i zapisu w tym obiekcie w tym samym lub innych wątkach muszą być chronione. Na przykład, biorąc pod uwagę obiekt A, jeśli wątek 1 jest zapisywany w A, wówczas wątek 2 musi być uniemożliwiony odczyt lub zapis do A.
Można bezpiecznie odczytywać i zapisywać w jednym wystąpieniu typu, nawet jeśli inny wątek odczytuje lub zapisuje w innym wystąpieniu tego samego typu. Na przykład, biorąc pod uwagę obiekty A i B tego samego typu, jest bezpieczne, gdy A jest zapisywany w wątku 1, a B jest odczytywany w wątku 2.
shared_ptr
Wiele wątków może jednocześnie odczytywać i zapisywać różne shared_ptr
obiekty, nawet jeśli obiekty są kopiami współwłaścicieli.
iostream
Standardowe obiekty cin
iostream , , wcin
cout
clog
wcout
cerr
wcerr
i wclog
są zgodne z tymi samymi regułami co inne klasy, z tym wyjątkiem: bezpieczne jest zapisywanie w obiekcie z wielu wątków. Na przykład wątek 1 może zapisywać w cout
tym samym czasie co wątek 2. Może to jednak spowodować mieszanie danych wyjściowych z dwóch wątków.
Uwaga
Odczyt z buforu strumienia nie jest uważany za operację odczytu. Zamiast tego jest uważana za operację zapisu, ponieważ stan klasy jest zmieniany.