boost库中的原子操作

 boost库这中有有关多线程的内容,粗略看书,似乎比C++ 11 的多线程好一丢丢。做个读书笔记,以后忘了可以参考。

原子操作  atomic

需要包含头文件

#include <boost/atomic.hpp>

要用这个头文件,boost库是需要编译的,最好是root权限下编译,要不会出错。 

    boost::atomic<int> a(10);//定义a为原子操作,
    assert( a == 10);//  如果a等于是不报错,不等于10 报错
    std::cout << "a = " << a << std::endl;
    boost::atomic_int b(100);//设置b为原子操作
    assert(b == 100);
    std::cout<< "b = " << b << std::endl;
    boost::atomic_int c(1);//设置c为原子操作
    assert(c == 1);
    std::cout << "c = " << c << std::endl;
    //load()函数为取值函数,也就是输出函数,输出为原子操作
    std::cout << "b.load() = " << b.load()<< std::endl;
    //exchange()函数为交换函数,交换之后返回之前的值
    //把111交换到a中,b=200,这个也是原子操作,=重载了store()函数
    //store()函数为幅值函数,原子操作。
    a.exchange(111);
    b = 200;
    c.store(11);
    
    boost::atomic<int> cc(c.exchange(a));
    std::cout << "cc.load() = " << cc.load() << std::endl;
    std::cout << "a.load() = " << a.load() << std::endl;
    std::cout << "b.load() = " << b.load() << std::endl;
    std::cout << "c.load() = " << c.load() << std::endl;

 

在Ubuntu16系统下截屏。这个可以按F2右面那个按键,全部是全屏幕截屏,PRINT SCREEN 这个按键,局部截屏需要设置一下的。进入设置->键盘->截图->对选区截图

就这样就好了。

 

版权声明:本文为m0_38036750原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_38036750/article/details/89457406