#include "stdafx.h"
#include <iostream>
#include <boost/thread.hpp>
#include <boost/atomic.hpp>
int main(int, char*[])
{
boost::atomic<INT32> a(0);
std::cout<<a<<std::endl;
boost::thread t1( [&]()
{
for (int cnt=0;cnt<100000;cnt++)
{
a += 1;
}
} );
boost::thread t2( [&]()
{
for (int cnt=0;cnt<100000;cnt++)
{
a -= 1;
}
});
t1.join();
t2.join();
std::cout<<'\t'<<a<<std::endl;
return 0;
}
以上两个独立线程分别操作数据 a , 结果为0 , 即保证了是原子操作
boost::atomic
最新推荐文章于 2021-07-07 10:46:25 发布