Может быть, я неправильно понял пример, но проблема "не выровненный указатель"
такой же, как на одноядерном исполнении. Если данные могут быть частично
записывается в память, тогда разные потоки могут видеть частичные обновления (если
нет подходящей блокировки) на любой машине с preemtive
многозадачность (даже в однопроцессорной системе).
Вам не нужно беспокоиться о кеше, если вы не пишете драйверы
для DMA-совместимых периферийных устройств. Современные мультипроцессоры имеют кеш
так что аппаратное обеспечение гарантирует, что поток на процессоре А будет
иметь такой же вид памяти, как поток на процессоре B. Если поток
на A читает область памяти, которая кэшируется на B, а затем поток на A
получит правильное значение из кэша Bs.
Вам нужно беспокоиться о значениях в регистрах и из
С точки зрения программирования, разница может быть не видимой, но
по моему мнению, вовлечение кеша в параллельном обсуждении часто
просто вводит ненужную путаницу.
Любая операция, которая помечена как «неделимая» в руководстве по программированию.
для ISA должно разумно продолжать быть неделимым в многопроцессорной
система построена с процессорами, использующими эту ISA или обратную совместимость
сломался бы. Однако это не означает, что операции, которые были
никогда не обещал быть неделимым, но оказался в определенном
реализация процессора, будет неделимым в будущем
реализации (например, в многопроцессорной системе).
[Редактировать] Дополнение к комментарию ниже
- Все, что записано в память, будет видимо всем
потоки, независимо от количества ядер (в кеше
система).
- Все, что записано в память неатомно, может оказаться частично
читать несинхронизированными потоками при наличии вытеснения (даже
в одноядерной системе).
Если указатель записан на невыровненный адрес в одном, атомарном
напишите тогда аппаратное обеспечение согласованности кеша убедится что все
Нити видят, что это завершено, или нет вообще. Если указатель написан
неатомно (например, с двумя отдельными операциями записи), то любой
потоки могут видеть частичное обновление даже в одноядерной системе
с истинным преимуществом.