1. 设置双重进入锁判断,例:
bool enter = false;
void test() {
if (enter) {
return;
}
mutex.lock();
if (enter) {
return;
}
enter = true;
mutex.unlock();
// 代码块..
enter = false;
}
第一次的判断可以防止在代码块执行的时间内其他线程频繁执行test函数造成锁竞争
2. 未完待续..