成都线上推广平台,整站优化系统厂家,西安商城网站建设公司,房地产营销案例100例C11提供了一个原子类型std::atomicT#xff0c;可以使用任意类型作为模板参数#xff0c;C11内置了整型的原子变量#xff0c;可以更方便的使用原子变量#xff0c;使用原子变量就不需要使用互斥量来保护该变量了#xff0c;用起来更简洁。例如#xff0c;要做一… C11提供了一个原子类型std::atomicT可以使用任意类型作为模板参数C11内置了整型的原子变量可以更方便的使用原子变量使用原子变量就不需要使用互斥量来保护该变量了用起来更简洁。例如要做一个计数器使用mutex是这样的如下代码
#include iostream
#include thread
#include mutex
#include chrono
using namespace std;int value 0;std::mutex g_mutex;void increment()
{for(int i 0; i 10; i){std::lock_guardstd::mutex lock(g_mutex);value;cout increment value: value endl;}
}void decrement()
{for(int i 0; i 10; i){std::lock_guardstd::mutex lock(g_mutex);--value;cout decrement value: value endl;}
}int main()
{thread t1(increment);thread t2(decrement);t1.join();t2.join();return 0;
} 如果使用了原子变量就不需要再定义互斥量了使用更方便了如下代码清单
#include iostream #include thread #include mutex #include chrono #include atomic using namespace std; std::atomicint value;
void increment() { for(int i 0; i 10; i) { value; cout increment value: value.load() endl; } } void decrement() { for(int i 0; i 10; i) { --value; cout decrement value: value.load() endl; } }
int main() { thread t1(increment); thread t2(decrement); t1.join(); t2.join(); return 0; }