Как оптимизация компилятора и процессора работает для ускорения выполнения кода?
В Linux Kernel Development (3-е издание), Методы синхронизации ядра, Порядок и барьеры. Вот пример:
И я озадачен утверждением в этой книге:
Опять же, без барьеров памяти, можно было бы установить для b значение pp, прежде чем для pp будет установлено значение p.
Итак, автор имеет в виду, если нет read_barrier_depends()
, b = *pp
будет казнен раньше pp = p
? Как это могло быть возможно?
1 ответ
Решение
Меня заинтересовала ваша проблема, поэтому я искал немного дольше. Я нашел сообщение о функциональности read_barrier_depends в списке ядра с некоторыми пояснениями: