Bezpečný přístup z více vláken ve standardní knihovně C++
Následující pravidla bezpečnosti vlákno platí pro všechny třídy ve standardní knihovny C++ – to zahrnuje shared_ptr, jak je popsáno níže.Někdy jsou poskytnuty bezpečnějších záruky – například standardní iostream objekty, jak je popsáno níže a typy určená pro multithreadingu, jako jsou uvedeny v < atomické >.
Je-li objekt vláken pro čtení z více vláken.Můžete například daný objekt A, je bezpečné pro čtení A z vlákna 1 a 2 vláken současně.
Pokud je objekt zapsán jedním vláknem, pak všechny čte a zapisuje do tohoto objektu na stejném nebo jiná vlákna musí být chráněny.Můžete například zadána objekt A, je-li se o zápis vlákno 1 A potom vlákno 2 musí být zakázáno, čtení nebo zápisu na A.
Je bezpečné pro čtení a zápis do jedné instance typu i v případě, že jiná vlákna je čtení nebo zápisu k jiné instanci stejného typu.Můžete například zadána objekty A a B stejného typu, je bezpečné při A probíhá zápis ve vlákně 1 a B načítán ve vlákně 2.
shared_ptr
Více vláken současně číst a zapisovat různé shared_ptr objektů, a to i v případě, že jsou objekty kopií, které sdílejí nároky na vlastnictví.
iostream
Standardní iostream objekty cin, cout, cerr, clog, wcin, wcout, wcerr, a wclog postupujte podle stejných pravidel jako ostatní třídy s touto výjimkou: bezpečně zapsat do objektu z více vláken.Například může zapisovat vlákno 1 cout současně jako vlákno 2.Výstup to však může způsobit ze dvou vlákna, chcete-li být smíchaného.
[!POZNÁMKA]
Při čtení z vyrovnávací paměti datového proudu nelze považovat za operace čtení.Namísto toho bude považován za být operace zápisu, protože došlo ke změně stavu třídy.