【发布时间】:2013-05-05 09:56:27
【问题描述】:
是否可以为使用_beginThread 创建的线程指定名称?我没有选择使用此功能,但我正在努力关注哪些线程正在关闭,当我没有关联名称时,这可能会让人感到困惑。
【问题讨论】:
标签: c++ multithreading visual-c++
是否可以为使用_beginThread 创建的线程指定名称?我没有选择使用此功能,但我正在努力关注哪些线程正在关闭,当我没有关联名称时,这可能会让人感到困惑。
【问题讨论】:
标签: c++ multithreading visual-c++
这是你要找的吗:
它的工作原理是引发并简单地处理一个非常特殊的异常,即调试器已知的 0x406D1388。调试器在第一次机会处理期间检索名称并在“线程”窗口中显示该名称。
【讨论】:
-1,如示例所示,意思是“当前线程”。
_beginthread 的返回值不是线程 ID。它是一个句柄,然后可以使用GetThreadId(HANDLE) 函数来获取id。
_beginthreadex,而不是_beginthread。 _beginthread 创建的线程在运行完成时会关闭返回的句柄,因此在创建线程中使用该句柄可能会导致代码异常(例如,创建的线程可能会运行到完成并在 _beginthread 返回之前关闭句柄到创建线程上的调用者)。