为了方便调试,有时候崩溃或者打断点,为了知道运行代码在哪个线程中执行,所以可以给线程设置名字
#include <iostream>
#include <thread>
#ifdef WIN32
#include <windows.h>
#else
#include <pthread.h>
#endif
void RunLoop()
{
while (1)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
int main()
{
std::thread *m_loopThread = new std::thread(RunLoop);
std::string threadName = "myThread";
#ifdef WIN32
int wcharCount = MultiByteToWideChar(CP_UTF8, 0, threadName.c_str(), -1, NULL, 0);
std::wstring wideString(wcharCount, L'\0');
MultiByteToWideChar(CP_UTF8, 0, threadName.c_str(), -1, &wideString[0], wcharCount);
PCWSTR pwstr = wideString.c_str();
HRESULT hr = SetThreadDescription(m_loopThread->native_handle(), pwstr);
if (FAILED(hr))
{
printf("SetThreadDescription error \n");
}
#else
pthread_setname_np(m_loopThread->native_handle(), threadName.c_str());
#endif
getchar();
}