Sdílet prostřednictvím


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.

Viz také

Referenční dokumentace

Standardní knihovna C++ – přehled