Для простоты предположим, что у нас ровно 8 потоков и массив байтов длиной ровно 8 байтов. Каждому потоку назначается байт из этого массива, то есть поток может свободно изменять назначенный байт и ни один из других байтов из массива.
Предположим также, что массив выровнен по границе 8 байт.
На первый взгляд было бы безопасным для потоков разрешать потокам изменять свои (и только свои) байты ad libitum , поскольку здесь фактически нет общих данных. Но, как я понимаю, все современные процессоры Intel и AMD, работающие на 64-битной Windows, могут считывать и записывать только не менее 8 байт (64-битных) за один раз. Поэтому я полагаю, что при изменении всего 1 байта из выровненного блока из 8 байтов процессор считывает все 8 байтов, модифицирует рассматриваемый байт и записывает обратно 1 модифицированный байт вместе с 7 неизмененными байтами. Это все, кроме поточно-ориентированного, поэтому я подозреваю, что при записи этих байтов будет необходим префикс LOCK.
Хотя я действительно надеюсь, что ошибаюсь.
Есть идеи?