/*
笔记:n个线程竞争一个资源,使用临界区上锁方式规定只允许每次一个线程访问该临界区获取资源。临界区需要做得比较小,否则导致资源浪费
久久不得响应
*/
#include <thread>
#include <iostream>
using namespace std;
void test_main() {
cout << "--------------------------" << endl;
cout << "||"<<this_thread::get_id()<<"||" << endl;
cout << "--------------------------" << endl;
}
int main() {
for (int i = 0; i < 3; i++) {//并发8个线程
std::thread tid(test_main);
tid.detach();
}
getchar();
return 0;
}
上面就是发生了竞争条件,那么使用锁,锁上临界区,掌控临界区内的资源。使用:
#include
static mutex mux;
mux.lock()
… (临界区)
mux.unlock()
/*
笔记:n个线程竞争一个资源,使用临界区上锁方式规定只允许每次一个线程访问该临界区获取资源。临界区需要做得比较小,否则导致资源浪费
久久不得响应
*/
#include <thread>
#include <iostream>
#include <mutex>
using namespace std;
static mutex mux;
void test_main() {
mux.lock();
cout << "--------------------------" << endl;
cout << "||"<<this_thread::get_id()<<"||" << endl;
cout << "--------------------------" << endl;
mux.unlock();
}
int main() {
for (int i = 0; i < 3; i++) {//并发8个线程
std::thread tid(test_main);
tid.detach();
}
getchar();
return 0;
}