#include "iostream"
#include "thread"
#include "mutex"
using namespace std;
int num=0;
mutex m;
/**
* 线程不安全
*/
void run(){
clock_t start = clock();
for(int i=0;i<1200000;i++) {
num++;
}
clock_t end = clock();
cout << "id=" << this_thread::get_id << ",num="<< num << endl;
cout << "spent time" << (end-start)/CLOCKS_PER_SEC << "s" << endl;
}
/**
* 线程安全
*/
void mutexrun(){
clock_t start = clock();
for(int i=0;i<1200000;i++) {
// cout << "i=" << i << endl;
m.lock();
num++;
// cout << "num=" << num << endl;
m.unlock();
}
clock_t end = clock();
cout << "id=" << this_thread::get_id << ",num="<< num << endl;
cout << "spent time" << (end-start)/CLOCKS_PER_SEC << "s" << endl;
}
int main(){
// thread t1 (run);
// thread t2 (run);
thread t1 (mutexrun);
thread t2 (mutexrun);
cin.get();
}
互斥锁 mutex
原创
©著作权归作者所有:来自51CTO博客作者kq1983的原创作品,请联系作者获取转载授权,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【并发编程】Mutex (互斥锁)发展分析1024程序员节 并发编程 Go 互斥锁 字段