Как оптимизация компилятора и процессора работает для ускорения выполнения кода?

В Linux Kernel Development (3-е издание), Методы синхронизации ядра, Порядок и барьеры. Вот пример:

И я озадачен утверждением в этой книге:

Опять же, без барьеров памяти, можно было бы установить для b значение pp, прежде чем для pp будет установлено значение p.

Итак, автор имеет в виду, если нет read_barrier_depends(), b = *pp будет казнен раньше pp = p? Как это могло быть возможно?

1 ответ

Решение

Меня заинтересовала ваша проблема, поэтому я искал немного дольше. Я нашел сообщение о функциональности read_barrier_depends в списке ядра с некоторыми пояснениями:

https://lwn.net/Articles/5159/

Другие вопросы по тегам