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.