实现多线程同步
1普通加锁
mutex m1;
void thread1(int a) {
for (int i = 0; i < 100; ++i) {
m1.lock();
cout <<"thread1"<<" "<< m++<<endl;
m1.unlock();
}
}
2lock_guard 加锁
mutex m1;
void thread1(int a) {
lock_guard<mutex> l1(m1);
for (int i = 0; i < 100; ++i) {
cout <<"thread1"<<" "<< m++<<endl;
}
}
3unique_lock加锁
#include<iostream>
#include<thread>
#include<mutex>
using namespace std;
int m = 1;
mutex m1;
void thread1(int a) {
for (int i = 0; i < 100; ++i) {
unique_lock<mutex> u1(m1);
cout <<"thread1"<<" "<< m++<<endl;
u1.unlock();
u1.lock();
u1.unlock();
}
}
void thread2(int a) {
for (int i = 0; i < 100; ++i) {
unique_lock<mutex> u2(m1);
cout << "thread2" << " " << m++ << endl;
u2.unlock();
}
}
int main() {
thread t1(thread1, m);
thread t2(thread2, m);
t1.join();
t2.join();
return 0;
}