] [
] Я только что прочитал статью MSDN [] «Проблемы синхронизации и многопроцессорности» [], в которой рассматриваются проблемы согласованности кэша памяти на многопроцессорных машинах. Это действительно открыло мне глаза, потому что я бы не подумал, что в приведенном ими примере может быть состояние гонки. В этой статье объясняется, что запись в память на самом деле может не происходить (с точки зрения другого процессора) в том порядке, в котором она написана в моем коде. Для меня это новая концепция! [
] [
] В этой статье представлены 2 решения: [
] [
] [
] В статье также упоминается, что «Следующие функции синхронизации используют соответствующие барьеры для обеспечения упорядочения памяти: • Функции, которые входят в критические разделы или выходят из них».[
] [
] Это та часть, которую я не понимаю. Означает ли это, что любые записи в память, которые ограничиваются функциями, использующими критические секции, защищены от проблем согласованности кеша и порядка памяти? Я ничего не имею против функций Interlock * (), но было бы неплохо иметь еще один инструмент в моем арсенале! [
]