В комментариях к статье "Цикл (операция) Чтение-Модификация-Запись. Как это работает", в очередной раз, была затронута тема использования стандартных средств компилятора для работы с внешними данными, включая аппаратные ресурсы. Причем проводилась, в некоторой степени, параллель между данными разделяемыми разными потоками или приложениями и данными аппаратными. Об этом написано многое и многими. В том числе, есть статьи и на моем канале. Но тема действительно сложная и вызывает множество дискуссий и вопросов...
Вступление Каждый программист, который интересовался параллельным программированием(а оно становиться необходимым в современном мире), слышал про проблему совместного использования ресурса несколькими потоками. Это приводит к взаимным блокировкам, data race и другим проблемам, которые либо замедляют, либо ломают нашу программу. Чтобы избежать всего этого и были придуманы примитивы синхронизации. Два из них мы сегодня разберём. Семафор Семафор своё название получил из-за того, что управляет потоками...