SetThreadName не работает с Visual Studio 2005 - PullRequest
0 голосов
/ 15 марта 2010

SetThreadName не устанавливает имя потока в Visual Studio 2005 при использовании, как показано ниже:

DWORD threadId;
HANDLE handle = CreateThread(NULL, stackSize, ThreadFunction,
                             ThreadParam, CREATE_SUSPENDED, &threadId);
if (handle)
{

   SetThreadName(threadId, "NiceName");
   ResumeThread(handle);
}

После открытия окна Threads вместо NiceName я вижу там имя ThreadFunction. Другие инструменты (например, Intel Parallel Inspector) используют NiceName, как и ожидалось.

  • Что-то не так с кодом выше?

  • Работает ли код с выпусками Visual Studio 2008 или 2010?

1 Ответ

0 голосов
/ 15 марта 2010

После нескольких экспериментов я обнаружил, что Visual Studio пытается быть умным, и когда поток начинает выполняться, он дает себе имя. Обходной путь - не пытаться дать имя потоку до того, как поток фактически запустится, самый простой способ добиться этого - вызвать SetThreadName изнутри функции потока.

Тем не менее, мне было бы интересно узнать, демонстрируют ли другие версии Visual Studio такое же поведение.

...