zoukankan      html  css  js  c++  java
  • c++11 std::atomic 原子操作

    The main characteristic of atomic objects is that access to this contained value from different threads cannot cause data races。

    提供对基本内建数据的互斥访问。

    // atomic::exchange example
    #include <iostream>       // std::cout
    #include <atomic>         // std::atomic
    #include <thread>         // std::thread
    #include <vector>         // std::vector
    
    std::atomic<bool> ready (false);
    std::atomic<bool> winner (false);
    
    void count1m (int id) {
      while (!ready) {}                  // wait for the ready signal
      
     for (int i=0; i<1000000; ++i)
    {} // go!, count to 1 million
     if (!winner.exchange(true))
     {
      std::cout << "thread #" << id << " won! "; 、
    } };
    int main () { std::vector<std::thread> threads; std::cout << "spawning 10 threads that count to 1 million... "; for (int i=1; i<=10; ++i) threads.push_back(std::thread(count1m,i)); ready = true; for (auto& th : threads) th.join(); return 0; }
  • 相关阅读:
    KBMMW 4.80.00 发布
    RCF库ClientStub.setAutoReconnect
    编译 boost
    2017学习计划
    _beginthreadex注意事项
    push_back模式工作
    总结2016
    <转>好婚姻是彼此放心
    ProcessExplore 最新版
    网站seo新手快速提升自己的技巧
  • 原文地址:https://www.cnblogs.com/rayfloyd/p/14306595.html
Copyright © 2011-2022 走看看