Привет, ребята. Я хочу знать, в чем разница между потокобезопасными данными и контейнерами с защитой потоков
Потокобезопасные данные :
Обычно относится к данным, которые защищены с использованием мьютексов , семафоров или других подобных конструкций.
Данные считаются потокобезопасными, если были приняты меры для обеспечения того, чтобы:
Мьютексы обычно работают, блокируя доступ к другим потокам, пока один поток изменяет общие данные. Это также известно как критическая секция , а RAII - это общая схема проектирования, используемая совместно с критическими секциями.
В зависимости от типа ЦП некоторые примитивные типы данных (например, int) и операции (приращение) могут не нуждаться в защите мьютекса (например, если они преобразуются в элементарную инструкцию на машинном языке). Однако:
Потокобезопасные контейнеры :
Контейнеры, в которых предусмотрены меры для обеспечения того, чтобы любые внесенные в них изменения происходили в поточно-ориентированном режиме.
Например, потокобезопасный контейнер может позволять вставлять или удалять элементы, используя определенный набор открытых методов, которые гарантируют, что любой код, который его использует, является поточно-ориентированным.
Другими словами, контейнерный класс обеспечивает защиту мьютекса как услугу для вызывающей стороны, и пользователю не нужно бросать свои собственные.