互锁读取64位变量

Leo*_*Leo 5 c++ multithreading

我有这个c ++代码(VS 2008):

LONGLONG res = InterlockedIncrement64(&m_longlong);
Run Code Online (Sandbox Code Playgroud)

沿着它运行,我希望能够从同一个变量中读取

LONGLONG res = InterlockedWHAT?64(&m_longlong)
Run Code Online (Sandbox Code Playgroud)

由于这是一个64位变量,简单的读取不被认为是线程安全的,但我找不到正确的InterlockedXXX.

我该如何阅读这个变量?

Hen*_*rik 6

LONGLONG res = InterlockedCompareExchange64(&m_longlong, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 您应该选择"m_longlong"不太可能具有的值,以避免弄脏缓存行. (2认同)