Оптимизация компилятора C++: удаление избыточных ограничений памяти из циклаC++

Программы на C++. Форум разработчиков
Anonymous
Оптимизация компилятора C++: удаление избыточных ограничений памяти из цикла

Сообщение Anonymous »

В этом коде:
#include

extern std::atomic flag;

void f() noexcept
{
while (not flag.load(std::memory_order_relaxed))
;
std::atomic_thread_fence(std::memory_order_acquire);
}

void f2() noexcept
{
while (not flag.load(std::memory_order_acquire))
;
}
< /code>
Должен ли компилятор с максимальным уровнем оптимизации, сгенерирует тот же код объекта для f () и f2 ()? Разве это не так, что приобретение заборов соответствует только между нагрузками разных местоположений памяти?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... rom-a-loop

Вернуться в «C++»