Поделиться через


Потокобезопасность в стандартной библиотеке C++

Потокобезопасный следующие правила применяются ко всем классам в стандартной библиотеке C++ (за исключением классов shared_ptr и iostream, как описано ниже).

Один объект safe потока для чтения из нескольких потоков.Например, если имеется объект a, безопасно выполнить чтение из потока из потока одновременно 1 и 2.

Если написать единый объект перед которым следует один поток, то все операции чтения и записи к этому объекту в одном или в других потоках должно быть защищено.Например, если имеется объект a 1, если поток, в который записывает a, поток 2 быть запрещено из чтения или записи до а.

Безопасность чтения и записи на один экземпляр типа, даже если другой поток чтении или записи к другой экземпляр того же типа.Например, если объекты того же типа a и B, если a безопасно записи в потоке 1 и B чтения в потоке 2.

shared_ptr

Несколько потоков могут одновременно чтение и запись, отличную shared_ptr объекты, даже если объекты копии, которые совместно используют владельца.

классы iostream

Классы iostream следует тем же правилам, что другие классы с одним исключением.Безопасность записи в объект из нескольких потоков.Например, поток может записывать до 1 cout в то время как поток 2.Однако это может привести к появлению выходе из 2, перемешиванным потоков.

ПримечаниеПримечание

Не рассматривается как чтение из буфера потока операции чтения.Он должен быть учитывается как операция записи, так как изменяет состояние класса.

См. также

Ссылки

Стандартный общие сведения о библиотеке C++