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