Есть ли разница между прямым возвратом результата 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

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