Потокобезопасность в стандартной библиотеке 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, перемешиванным потоков.
Примечание |
---|
Не рассматривается как чтение из буфера потока операции чтения.Он должен быть учитывается как операция записи, так как изменяет состояние класса. |