windows中相關原子操作的函式

2021-10-08 07:31:13 字數 464 閱讀 7435

一下函式呼叫都是原子操作,即執行緒安全的:

interlockedexchange:把目標運算元(引數1所指向的記憶體中的數)與乙個值(引數2)交換,返回引數1的原始值

interlockedcompareexchange:是把目標運算元(第1引數所指向的記憶體中的數)與乙個值(第3引數)比較,如果相等,則用另乙個值(第2引數)與目標運算元(第1引數所指向的記憶體中的數)交換;返回值為引數1的原始值

interlockedincrement:引數所指的記憶體中的數字加1

interlockeddecrement:引數所指的記憶體中的數字減1

interlockedexchangeadd:引數1所指的記憶體中的數字,加上引數2對應的值,返回未加前的引數1

interlockedexchangepointer:把目標運算元(引數1的指標)設定為引數2對應的指標,返回未重新指向前的引數1指標

Nginx中的原子操作

原子操作在系統程式設計中屬於基礎工具。nginx與其他軟體很不一樣,它幾乎把所有作業系統的功能都封裝了一遍,估計是出於程式設計一致性和可移植性的考慮。對於原子操作,nginx提供一組介面。這裡我們只研究有gcc 4.1以上版本的情況,因為nginx對不同的情況有不同的實現,gcc應該還是比較普遍的吧...

《windows核心程式設計》讀後編碼 原子操作

多執行緒 原子操作 使用者模式下的同步操作 cpp 定義控制台應用程式的入口點。vs2010上編譯通過 include stdafx.h include include include using namespace std volatile long g ntatolcount 宣告為volati...

Windows多執行緒程式設計(7) 原子操作

今天介紹一種低層次的多執行緒同步機制 原子操作 atomic operation 原子操作保證同一時間只能有乙個執行緒對某個變數進行操作。通常一條c c 語句對應多個彙編指令,而處理器的中斷可能發生在任意一條彙編指令處。因此,當乙個執行緒訪問某個變數時,可能會有另乙個執行緒也在訪問,這就造成了資料的...