Здравствуйте, acDev, Вы писали:
D>Если изменяемое значение является счётчиком (или подобным), то без Interlocked* функций не обойтись! D>А если у вас просто флаговое предназначение "слова", то достаточно просто выровнять "слово" на 4 байт, что бы обеспечить атомарность.
Не это не счетчик, но и не флаг — а некоторое число, которое будет использоваться в вычислениях основным потоком. Когда любой из потоков его меняет, он не опирается на предыдущее значение. Таким образом не важно, кто записал, важно чтоб число было в точности таким, какое записывал один из потоков, а не "каша" из них.
Получается, если слово не выровнено на 4 байта, то может произойти такая ситуация, когда действительно половина слова записана одним потоком, а вторая половина другим? Полагаю, что пруфы надо искать где-то на сайте интела/амд? Если знаете, был бы признателен за ссылку на оные.