Interlocked系列互鎖函式

2021-08-25 23:46:43 字數 1029 閱讀 4016

//增減

(1) long interlockedincrement(in out long volatile *lpaddend);

lpaddend為長整型變數的位址,返回值為原始值。這個函式的主要作用是原子性自增(相當於++操作)。

(2) long interlockeddecrement(in out long volatile *lpaddend);

lpaddend為長整型變數的位址,返回值為原始值。這個函式的主要作用是原子性自減(相當於--操作)。

(3) long interlockedexchangeadd ( lplong addend, long increment );

addend為長整型變數的位址,increment為想要在addend指向的長整型變數上增加的數值(可以是負數)。這個函式的主要作用是保證這個加操作為乙個原子訪問。

//交換

(4) long interlockedexchange( lplong target, long value );

用第二個引數的值取代第乙個引數指向的值。函式返回值為原始值。

(5) pvoid interlockedexchangepointer( pvoid *target, pvoid value );

用第二個引數的值取代第乙個引數指向的值。函式返回值為原始值。

//比較交換

(6) long interlockedcompareexchange(

lplong destination, long exchange, long comperand );

如果第三個引數與第乙個引數指向的值相同,那麼用第二個引數取代第乙個引數指向的值。函式返回值為原始值。

(7) pvoid interlockedcompareexchangepointer (

pvoid *destination, pvoid exchange, pvoid comperand );

如果第三個引數與第乙個引數指向的值相同,那麼用第二個引數取代第乙個引數指向的值。函式返回值為原始值。

Interlocked系列函式

1.增減操作 long cdecl interlockedincrement long volatile addend long cdecl interlockeddecrement long volatile addend 返回變數執行增減操作之後的值。long cdec interlockede...

原子訪問 Interlocked系列函式

我們都知道,windows是乙個搶占式的多執行緒環境,因此系統可能會在任意時刻暫停乙個執行緒,切換到另乙個執行緒讓新的執行緒繼續執行。請看這段 2個執行緒函式,各有乙個for迴圈,1000w次,那麼,我們或許會認為,最終輸出的 g x的值會是 1000w 1000w 20000000?但是,在多執行...

Interlocked類的靜態方法

1.public static class interlocked2.add int32,int32 對兩個 32 位整數進行求和並用和替換第乙個整數,上述操作作為乙個原子操作完成。add int64,int64 對兩個 64 位整數進行求和並用和替換第乙個整數,上述操作作為乙個原子操作完成。3.c...