1. 程式人生 > 實用技巧 >關於C++中的 _InterlockedIncrement 函式

關於C++中的 _InterlockedIncrement 函式

//shared_ptr 原始碼中的物件引用次數 自增的實現,程式碼位於 memory檔案中,  
//其中
_MT_INCR 的定義是:#define _MT_INCR(x) _INTRIN_RELAXED(_InterlockedIncrement)(reinterpret_cast<volatile long*>(&x))
void _Incref() noexcept { // increment use count
        _MT_INCR(_Uses);
    }

void _Incwref() noexcept { // increment weak reference count
_MT_INCR(_Weaks); }

微軟文件中的解釋https://docs.microsoft.com/en-us/previous-versions/ms919120(v=msdn.10):

This function both decrements (decreases by one) the value of the specified 32-bit variable and checks the resulting value.InterlockedDecrementprevents more than one thread from using theInterlockedDecrementor

InterlockedIncrementfunction to access the same variable simultaneously.

原子鎖一般用來做為存保護時使用,特別是在多執行緒操作時。一次只允許一個執行緒對該變數進行操容作。
long a=0;
_interlockedincrement(&a);
a++;
_interlockeddecrement(&a);
就是對a加以保護,只允許當前執行緒對變數a進行操作,該執行緒執行完以後,其他執行緒才能對該變數進行操作,這個函式和interlockedincrement配合使用,一加一減

參考連結:https://zhidao.baidu.com/question/557872110144089692.html