C ++ 0x определяет шаблон std :: atomic
для потока безопасный атомарный доступ к переменным. В этом шаблоне есть, среди прочего, функция-член std :: atomic :: exchange , которая атомарно сохраняет новое значение в "this" и извлекает существующее значение "this". ".
Win32 имеет аналогичную функцию: InterlockedExchange
Эти операции делают просто: атомарное чтение-изменение.
Я не понимаю, что такое точка этой операции. Считанное значение, которое возвращается, "бессмысленно", потому что, как только я смогу проверить возвращаемое значение, другой поток, возможно, уже перезаписал его.
Итак, какой вариант использования для этого? Что может информация о том, какое значение было там непосредственно перед тем, как я записал свое новое значение в переменную, скажите мне?
Примечание: compare_exchange
/ Для меня имеет смысл семантика InterlockedCompareExchange
, но не простая семантика обмена.