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