Здравствуйте. Программа (точнее, хорошо отлаженная её часть) недавно продемонстрировала гонку. Намеренно повторить не удалось — вероятно, глюк очень редкий. В связи с этим вопрос.
Сложное вычисление разбивается между несколькими процессорами. Для ускорения работы используется несинхронизированный кэш (грубо говоря, массив double'ов) с такой логикой.
double &x = кэш[i];<br/>
if (isnan(x)) then кэш[i]=вычислить(i);<br/>
return x;<br/>
Возможны ли многопоточные гонки при параллельном чтении и записи double'а в одну и ту же ячейку? Как лучше ошибку обойти?