在下面的示例中,func 应该挂起,因为它尝试在 main 之后获取锁:
using namespace std;
#include <iostream>
#include <cstring>
#include <mutex>
std::mutex myMutex;
void func(void)
{
std::lock_guard<std::mutex> lock(myMutex);
printf("WTF somehow got lock!!!\n");
}
int main()
{
std::lock_guard<std::mutex> lock(myMutex);
// Mutex is locked here.
func();
return 0;
}
但是,当我运行它时, func 会以某种方式获得锁定。为什么我的 C++ 不工作?谢谢。
尝试在已被同一线程锁定的给定线程中锁定
std::mutex
具有未定义的行为。