Пишу SCADA-ядро на C++ для инженерных систем: опрос ПЛК, кэширование значений, правила автоматики и управление исполнительными механизмами. На текущем этапе упёрся в практический вопрос многопоточности: как правильно разделять потоки чтения и записи, как сериализовать доступ к одному каналу связи, и насколько оправдано использование std::condition_variable. В статье показываю текущую реализацию потока опроса ПЛК и хочу услышать мнение коллег, которые разрабатывали промышленные SCADA-системы. Читать далее