【发布时间】:2019-10-24 11:18:08
【问题描述】:
我之前被问过一个关于互斥锁的问题,代码工作正常,但我对这个结果感到困惑:
::std::mutex s_mutex;
void funcA()
{
s_mutex.lock();
printf( "funcA \n" );
s_mutex.unlock();
}
void funcB()
{
s_mutex.lock();
funcA();
printf( "funcB \n" );
s_mutex.unlock();
}
int main()
{
funcB();
return 0;
}
它工作正常并打印出我没有预料到的内容:
funcA
funcB
但是为什么呢?这个函数在主线程中被调用,似乎调用了两次lock。
【问题讨论】:
-
请注意,
std::recursive_mutex确实支持这种调用模式。 -
感谢您的来信。我只是对这个案子感到困惑。