#include <string>
#include <mutex>
#include <iostream>using namespace std;
namespace
{//std::mutex m;std::recursive_mutex m; // 可递归class Test{public:void test1(){std::lock_guard<std::recursive_mutex> lock(m);}void test2(){std::lock_guard<std::recursive_mutex> lock(m);test1();cout << "test2()" << endl;}};
}#if 1int main()
{Test t;t.test2();return 0;
}#endif
输出:
test2()
递归上锁用recursive_mutex
,否则会崩。