Почему std::atomic<uint64_t>{}.is_lock_free() имеет значение true, если предназначено для x86 (32-разрядная платформа) вC++

Программы на C++. Форум разработчиков
Anonymous
Почему std::atomic<uint64_t>{}.is_lock_free() имеет значение true, если предназначено для x86 (32-разрядная платформа) в

Сообщение Anonymous »

Я заметил, что std::atomic{}.is_lock_free() возвращает true, даже если я переключаю целевую платформу на x86 в Visual Studio. Я также проверил коды дизассемблирования при назначении uint64_t, как показано ниже.

Код: Выделить всё

uint64_t b = a;

Код: Выделить всё

009F18F5  mov         eax,dword ptr [a]
009F18F8  mov         ecx,dword ptr [ebp-0Ch]
009F18FB  mov         dword ptr [b],eax
009F18FE  mov         dword ptr [ebp-1Ch],ecx
Я вижу, что он генерирует 4 строки! Итак, мой вопрос: почему его можно считать свободным от блокировки?

Подробнее здесь: https://stackoverflow.com/questions/798 ... 86-32-bits

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