zoukankan      html  css  js  c++  java
  • memory_order_consume

    #include <thread>
    #include <atomic>
    #include <cassert>
    #include <string>
     
    std::atomic<std::string*> ptr;
    int data;
     
    void producer()
    {
        std::string* p  = new std::string("Hello");
        data = 42;
        ptr.store(p, std::memory_order_release);
    }
     
    void consumer()
    {
        std::string* p2;
        while (!(p2 = ptr.load(std::memory_order_consume)))
            ;
        assert(*p2 == "Hello"); // never fires: *p2 carries dependency from ptr
        assert(data == 42); // may or may not fire: data does not carry dependency from ptr
    }
     
    int main()
    {
        std::thread t1(producer);
        std::thread t2(consumer);
        t1.join(); t2.join();
    }
    

      

  • 相关阅读:
    你不是真正的快乐
    春天里
    一生有你
    故乡
    第一天
    直来直往
    恋恋风尘
    烦恼歌
    because of you
    从头再来
  • 原文地址:https://www.cnblogs.com/youge-OneSQL/p/12287452.html
Copyright © 2011-2022 走看看