Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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