报错信息:
“mutex destroyed while busy”(互斥锁在忙碌时被销毁)
可能原因:
线程1对某个临界资源上了锁(lock),还没解锁(unlock)的时候,线程2就 强行 访问该临界资源。
举个例子:
代码如下,主线程里创建了1个子线程t1并让它分离出主线程,子线程里加锁后让全局变量i自增100w次,主线程里输出自增后的全局变量的值:
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
int i = 0; // 全局变量
mutex m; // 全局锁
void fun() {
cout << "子线程开始运行" <<endl;
m.lock();
for (int k = 0; k < 1000000; ++k) {
++i