【发布时间】:2011-08-10 08:24:53
【问题描述】:
C++0x 指定std::atomic 模板用于线程安全的原子访问变量。除其他外,此模板有一个成员函数std::atomic::exchange,它在“this”中自动存储一个新值并检索“this”的现有值。
Win32也有类似功能:InterlockedExchange
现在,这些操作的作用很简单:原子读取-修改。
我不明白的是这个操作的要点是什么。返回的值是“没有意义的”,因为一旦我可以检查返回值,另一个线程可能已经覆盖了它。
那么这个的用例是什么? 在我将新值写入变量之前,哪个值的信息可以告诉我什么?
注意:compare_exchange / InterlockedCompareExchange 语义对我来说确实有意义,但不是简单的交换语义。
【问题讨论】:
标签: multithreading language-agnostic c++11 atomic