小编Sur*_*esh的帖子

使用InterlockedCompareExchange无锁

我试图使用互锁操作使代码片段无锁,任何想法如何翻译?

if (m_Ref == 0xFFFF)
    m_Ref = 1;
else
{
    if (++m_Ref == 1)
        CallSomething(); //

}
Run Code Online (Sandbox Code Playgroud)

我在想类似的东西

if (InterlockedCompareExchange(&m_Ref, 1, 0xFFFF) != 0xFFFF))
{
    if (InterlockedIncrement(&m_Ref) == 1)
         CallSomething();
}
Run Code Online (Sandbox Code Playgroud)

这有什么问题/竞争吗?

c++ multithreading synchronization interlocked

5
推荐指数
1
解决办法
9660
查看次数