Определение места для использования барьеров (заборов)

Инструкции x86 lfence / sfence / mfence используются для реализации механизмов rmb () / wmb () / mb () в ядре Linux. Легко понять, что они используются для сериализации обращений к памяти. Однако гораздо труднее определить, когда и где их использовать при написании кода, - прежде чем обнаружится ошибка в поведении во время выполнения.

Мне было интересно узнать, есть ли известные предупреждения, которые можно было бы проверить при написании / просмотре кода, которые могут помочь нам определить, где должны быть вставлены барьеры. Я понимаю, что это слишком сложно, но есть ли практическое правило или контрольный список, которые могут помочь нам определить места кода, где они необходимы?

Ответы на вопрос(1)

Ваш ответ на вопрос