Bezpieczeństwo wątków w standardowa biblioteka języka C++
Następujące zasady bezpieczeństwa wątku stosuje się do wszystkich klas standardowa biblioteka języka C++ (z wyjątkiem shared_ptr iostream klasy i, zgodnie z poniższym opisem).
Pojedynczy obiekt jest wielowątkowość odczyt z wielu wątków.Na przykład biorąc pod uwagę obiektu A, jest bezpieczne, A wątek 1 i 2 wątek jednocześnie odczytać.
Jeśli pojedynczy obiekt jest zapisywany przez jeden wątek, następnie wszystkie odczytuje i zapisuje się do tego obiektu na tych samych lub innych wątków, które muszą być chronione.Na przykład biorąc pod uwagę obiektu A, jeżeli wątek 1 jest piśmie A, następnie wątek 2 musi być uniemożliwił odczyt lub zapis do A.
Bezpiecznie do odczytu i zapisu do jednego wystąpienia określonego typu, nawet jeśli inny wątek jest odczyt lub zapis do innego wystąpienia tego samego typu.Na przykład biorąc pod uwagę obiektów, A i b tego samego typu, bezpiecznie Jeśli zapisywany w wątku 1 A i b jest odczytywany w wątku 2.
shared_ptr
Wiele wątków jednocześnie mogą odczytywać i pisać w różnych shared_ptr obiektów, nawet w przypadku, gdy obiekty są kopie, które współużytkują własności.
Klasy iostream
Klasy iostream, wykonaj te same reguły, innych klas, z jednym wyjątkiem.Bezpiecznie zapisu do obiektu z wielu wątków.Na przykład, można zapisać wątek 1 cout w tym samym czasie jak wątek 2.Jednak to skutkować dane wyjściowe z dwóch wątków jest zmieszanego.
[!UWAGA]
Odczyt z bufora strumienia nie jest uważana za operacji odczytu.Powinna ona uznana za operacji zapisu, ponieważ powoduje to zmianę stanu tej klasy.