小编til*_*man的帖子

std :: lock仍然导致死锁

std :: lock用于防止死锁,对吗?但是在我的测试中,它仍然导致死锁.你能检查我的测试代码,看看我是否错误地使用了它?

std::mutex m1;
std::mutex m2;

void func1()
{
    std::unique_lock<std::mutex> lock1(m1, std::defer_lock);
    printf("func1 lock m1\n");
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::unique_lock<std::mutex> lock2(m2, std::defer_lock);
    printf("func1 lock m2\n");
    std::lock(m1, m2);
    printf("func1 std lock\n");

}

void func2()
{
    std::unique_lock<std::mutex> lock1(m2, std::defer_lock);
    printf("func2 lock m2\n");
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::unique_lock<std::mutex> lock2(m1, std::defer_lock);
    printf("func2 lock m1\n");
    std::lock(m2, m1);
    printf("func2 std lock\n");
}



int _tmain(int argc, _TCHAR* argv[])
{
    std::thread th1(func1);
    std::thread th2(func2);
    th1.join();
    th2.join();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:func1 lock m1 func2 lock m2 func2 lock m1 func1 lock m2 func2 std …

c++ deadlock locking c++11

4
推荐指数
1
解决办法
312
查看次数

使用 vmware 机器进行内核调试

我正在使用 windbg 开始使用 vmware windows 机器进行内核调试。我提到

https://msdn.microsoft.com/en-us/library/windows/hardware/ff538143(v=vs.85).aspx

但我没有成功。我有两个问题。

1)。通过这样的命令启动windbg后:

**windbg -k com:port=\\10.57.43.22\pipe\debug,pipe**
Run Code Online (Sandbox Code Playgroud)

它会显示:

**Fail to open \\10.57.43.22\pipe\debug
Kernel debugger failed initialization, Win32 error On1326
"Logon failure: unknown user name or bad password"**
Run Code Online (Sandbox Code Playgroud)

是什么原因?我没有空间输入用户名或密码。

2)。在msdn文章中,它说:

在虚拟机中,配置 COM 端口以映射到命名管道。

我在 vmware 虚拟机上添加了一个使用命名管道的串行端口。如何将 COM 端口映射到管道?

windows debugging windbg

2
推荐指数
1
解决办法
3224
查看次数

我可以在没有互斥锁的线程中读取bool变量吗?

如果我不使用互斥锁,以下源代码有什么问题吗?

bool bStop = false;

void thread1_fun()
{
    while (!bStop)
    {
        doSomething();
    }
}

void thread2_fun()
{
    bStop = true;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutex

2
推荐指数
2
解决办法
1782
查看次数

标签 统计

c++ ×2

c++11 ×1

deadlock ×1

debugging ×1

locking ×1

multithreading ×1

mutex ×1

windbg ×1

windows ×1