Необходимо ли вызывать load() перед сравнением_exchange_strong()?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Необходимо ли вызывать load() перед сравнением_exchange_strong()?

Сообщение Anonymous »

Я изучал последовательность памяти C++ и нашел этот код в Unreal Engine5. Мой вопрос: почему бы сначала не вызвать Compare_exchange_strong() напрямую, а не load()?
FHttpRequest* GetFreeRequest()
{
for (uint8 i = 0; i < Pool.Num(); ++i)
{
if (!Pool.Usage.load(std::memory_order_relaxed)) //Reset();
return Pool.Request;
}
}
}
return nullptr;
}

Я думаю, можно удалить вызов load() и изменить его на что-то вроде этого:
FHttpRequest* GetFreeRequest()
{
for (uint8 i = 0; i < Pool.Num(); ++i)
{
uint8 Expected = 0u;
if (Pool.Usage.compare_exchange_strong(Expected, 1u))
{
Pool.Request->Reset();
return Pool.Request;
}
}
return nullptr;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... nge-strong
Ответить

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

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

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

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

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