Если одна 32-разрядная переменная распределяется между несколькими потоками, я должен установить блокировку мьютекса вокруг переменной? Например, предположим, что 1 поток записывается на 32-разрядный счетчик, а второй поток читает его. Есть ли вероятность, что 2-й поток может прочитать поврежденное значение?
Я работаю над 32-битной встроенной системой ARM. Кажется, что компилятор выравнивает 32-битные переменные, чтобы их можно было читать или писать с помощью одной команды. Если 32-битная переменная не была выровнена, то чтение или запись будут разбиты на несколько инструкций, а второй поток может прочитать поврежденное значение.
Изменяется ли ответ на этот вопрос, если я перейду к многоядерной системе в будущем, и переменная будет разделяться между ядрами? (предполагая общий кэш между ядрами)
Спасибо!