我想使無鎖使用互鎖操作,以下任何想法如何翻譯此代碼片段?無鎖使用聯鎖CompareExchange
if (m_Ref == 0xFFFF)
m_Ref = 1;
else
{
if (++m_Ref == 1)
CallSomething(); //
}
我想這樣
if (InterlockedCompareExchange(&m_Ref, 1, 0xFFFF) != 0xFFFF))
{
if (InterlockedIncrement(&m_Ref) == 1)
CallSomething();
}
是否有這個的任何問題/種族?
@Remus Rusanu - 非常感謝 – Suresh 2011-05-02 23:03:05
這裏沒有使用'volatile'的點,它沒有映射內存。 – GManNickG 2011-05-03 01:43:30
@GMan:內存映射與'volatile'有什麼關係? – 2011-05-03 04:04:43