Каков вариант использования операции атомарного обмена (чтения-записи)?

C ++ 0x определяет шаблон std :: atomic для потока безопасный атомарный доступ к переменным. В этом шаблоне есть, среди прочего, функция-член std :: atomic :: exchange , которая атомарно сохраняет новое значение в "this" и извлекает существующее значение "this". ".

Win32 имеет аналогичную функцию: InterlockedExchange

Эти операции делают просто: атомарное чтение-изменение.

Я не понимаю, что такое точка этой операции. Считанное значение, которое возвращается, "бессмысленно", потому что, как только я смогу проверить возвращаемое значение, другой поток, возможно, уже перезаписал его.

Итак, какой вариант использования для этого? Что может информация о том, какое значение было там непосредственно перед тем, как я записал свое новое значение в переменную, скажите мне?

Примечание: compare_exchange / Для меня имеет смысл семантика InterlockedCompareExchange , но не простая семантика обмена.

7
задан Martin Ba 10 August 2011 в 08:24
поделиться