2010-03-15 2 views
0

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

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

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

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

  • Что-то не в порядке с кодом выше?

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

ответ

0

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

Мне все еще интересно узнать, показывают ли другие версии Visual Studio одинаковое поведение.

+0

Я использую это в VS2010 и задаю имя перед возобновлением потока, и он работает с удовольствием. Интересно отметить, что код использует CWinThread MFC. –

Смежные вопросы