代码之家  ›  专栏  ›  技术社区  ›  Suma

sethreadname不适用于Visual Studio 2005

  •  0
  • Suma  · 技术社区  · 15 年前

    SetThreadName 当按以下方式使用时,不使用Visual Studio 2005设置线程名:

    DWORD threadId;
    HANDLE handle = CreateThread(NULL, stackSize, ThreadFunction,
                                 ThreadParam, CREATE_SUSPENDED, &threadId);
    if (handle)
    {
    
       SetThreadName(threadId, "NiceName");
       ResumeThread(handle);
    }
    

    打开线程窗口后,我可以看到线程函数的名称,而不是nicename。其他工具(如Intel Parallel Inspector)按预期使用niceName。

    • 上面的代码有问题吗?

    • 代码是否适用于Visual Studio 2008或2010版本?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Suma    15 年前

    经过几次实验,我发现这是因为Visual Studio试图变得更智能,当线程开始执行时,它给自己起了一个名字。解决方法不是在线程实际启动之前给线程命名,最简单的方法是从线程函数内部调用setThreadName。

    不过,我还是想知道其他版本的Visual Studio是否也表现出同样的行为。