std::lock_guard 未按预期锁定互斥体

问题描述 投票:0回答:1

在下面的示例中,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++ 不工作?谢谢。

c++ mutex stdmutex
1个回答
0
投票

尝试在已被同一线程锁定的给定线程中锁定

std::mutex
具有未定义的行为。

© www.soinside.com 2019 - 2024. All rights reserved.