boost atomic原子操作使用

2021-10-03 19:53:56 字數 482 閱讀 7043

1、boost提供了跨平台的原子操作功能,簡化我們在併發環境中讀寫變數。下面的示例展示了最長用的原子操作。

// concurrentprogram_test.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include #include #include //二進位制操作

int main()

//下面由於boost過載操作符,發生了隱式轉換

if (b)

//存值後返回原值

boost::atomicn(100);

std::cout << "原來值是: " << n.exchange(200) << std::endl;

//cas操作(compare and swap)

原子性,原子操作

舉個例子 a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 從a的帳戶中減去1000塊錢。如果a的帳戶原來有3000塊錢,現在就變成2000塊錢了。在b的帳戶裡加1000塊錢。如果b的帳戶如果原來有2000塊錢,現在...

原子變數與原子操作

1.原子操作的速度要快於臨界區,event,互斥量,如果多個執行緒同時寫乙個變數時,最方便的就是原子操作。原子操作函式,解決多執行緒安全 2.原子變數也是為了解決執行緒衝突問題,如果兩個執行緒同時訪問同乙個變數,乙個執行緒改變了這個變數,另乙個執行緒就會出現一些bug。3.release和debug...

c 原子操作 賦值 c 原子操作

這個型別可以在兩個狀態間切換 設定set flag true 和清除clear flag false 必須被atomic flag init初始化此時flag為clear狀態,初始化標準為是清除狀態。當你的標誌物件已初始化,那麼你只能做三件事情 銷毀,清除或設定 查詢之前的值 這些事情對應的函式分別...