Udostępnij za pośrednictwem


Bezpieczeństwo wątku w standardowej bibliotece C++

Poniższe reguły bezpieczeństwa wątków dotyczą wszystkich klas w bibliotece Standard C++ — dotyczy to również shared_ptr, zgodnie z opisem poniżej.Czasami zostaną udzielone gwarancje lepsze gwarancje — na przykład iostream standardowych obiektów, zgodnie z opisem poniżej i typy przeznaczone specjalnie dla wielowątkowości, jak w < częściowych >.

Obiekt jest bezpieczeństwa wątków do odczytu przez wiele wątków.Na przykład danego obiektu A, jest bezpieczne do odczytu A z wątku 1 i 2 wątek jednocześnie.

Jeśli obiekt jest zapisywana do jednego wątku, następnie wszystkie odczytuje i zapisuje ten obiekt na tym samym lub inny wątek muszą być zabezpieczone.Na przykład biorąc pod uwagę obiektu A, jeśli zapisuje wątku 1 A, następnie wątku 2 muszą być zabezpieczone przed Odczyt lub zapis do A.

Jest bezpieczne do odczytu i zapisu do jednego wystąpienia typu, nawet jeśli inny wątek jest odczytu lub zapisu do innego wystąpienia tego samego typu.Na przykład biorąc pod uwagę obiektów, A i B tego samego typu, jest bezpieczne, gdy element jest zapisywana w wątku 1 i B jest odczytywany w wątku 2.

shared_ptr

Wiele wątków można jednocześnie do odczytu i zapisu różnych shared_ptr obiektów, nawet wtedy, gdy obiekty są kopie, które współdzielą własności.

iostream

Obiekty standardowe iostream cin, cout, cerr, clog, wcin, wcout, wcerr, i wclog są zgodne z regułami innych klas, z wyjątkiem tego: bezpiecznie do zapisania obiektu z wielu wątków.Na przykład można zapisać wątku 1 cout w tym samym czasie w wątku 2.Jednak może to spowodować dane wyjściowe z dwóch wątków, aby się zmieszać.

[!UWAGA]

Odczytu z buforu strumienia nie jest uważane za operacji odczytu.Zamiast tego jest uznawany za na operację zapisu, ponieważ stan klasy zostało zmienione.

Zobacz też

Informacje

Standardowa biblioteka C++ — Przegląd