Есть ли разница между прямым возвратом результата InterlockedDecrementRelease() и его первым захватом в переменную?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли разница между прямым возвратом результата InterlockedDecrementRelease() и его первым захватом в переменную?

Сообщение Anonymous »

У меня вопрос, есть ли разница между этими двумя фрагментами кода.

Первый из них я нашел в реализации интеллектуальной ссылки/указателя в качестве подсчета ссылок.

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

int Dec() const
{
int ret = InterlockedDecrementRelease(&_count);
return ret;
}
Метод вызывает API Windows для атомарного уменьшения _count (который является изменчивым и изменчивым). На самом деле он скомпилирован только на Windows x86, поэтому я предполагаю, что InterlockedDecrementRelease() — это то же самое, что InterlockedDecrement().
Но мне интересно, будет ли он отличаться от

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

int Dec() const
{
return InterlockedDecrementRelease(&_count);
}
В случае обычных функций я предполагаю, что компилятор с оптимизацией создает тот же код.
Но в многопоточности и функциях, которые возятся с ограничениями, я не уверен, имеет ли промежуточная переменная специальное назначение или это просто стиль кодирования.>

Подробнее здесь: https://stackoverflow.com/questions/799 ... decrementr
Ответить

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

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

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

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

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