Да, будет на stm32, но вопрос как бы общий. Подскажите как грамотно организовать обмен данными между задачами. Допустим у меня есть глобальная структура данных в которой хранятся состояния входов, выходов, считанные с ацп данные, флаги, массивы и тд. В общем всевозможные входные, выходные и служебные данные. И есть несколько задач, которым нужно как считывать данные из этой структуры так и изменять (к примеру считали состояние определённого входа
mainData.input1, выполнили какие-то логические действия и затем нужно изменить состояние определённого выхода через эту же структуру mainData.output1.
Как правильно организовать доступ/модификацию данных если несколько задач могут обрабатывать те-же данные и при возникновении ситуации когда одна задача считала данные и в процессе их обработки другая задача тоже считала и изменила их, а после этого первая задача продолжила работать с ранее считанными данными и в итоге изменила их не зная что это уже не те данные. Если использовать глобальную структуру как есть то я так понял данные могут потеряться, если отправлять структуру в очередь то тоже не понятно как читать и как модифицировать несколькими задачами ведь при чтении скажем одного элемента структуры вся структура будет прочитана и другая задача уже не узнает что там было..... Надеюсь объяснил понятно