重点:
1.使用std::recursive_mutex
来创建递归锁(recursive lock),它是C++标准库提供的一种多线程同步机制。递归锁允许同一线程多次获得锁,而不会造成死锁。
2.递归锁允许同一线程在已经获得锁的情况下再次获得锁,这对于递归函数或嵌套函数非常有用。不过,要小心使用递归锁,以避免死锁和性能问题。通常,只有在确实需要在递归调用中再次获得锁时才使用递归锁。
#include
#include
#include
std::recursive_mutex mtx; // 创建递归锁
void RecursiveFunction(int depth) {
std::unique_lock lock(mtx);
std::cout << "Depth: " << depth << std::endl;
if (depth > 0) {
RecursiveFunction(depth - 1);
}
}
int main() {
std::thread t1(RecursiveFunction, 3);
std::thread t2(RecursiveFunction, 2);
t1.join();
t2.join();
return 0;
}