【问题标题】:Name a thread created by _beginThread in C++在 C++ 中命名由 _beginThread 创建的线程
【发布时间】:2013-05-05 09:56:27
【问题描述】:

是否可以为使用_beginThread 创建的线程指定名称?我没有选择使用此功能,但我正在努力关注哪些线程正在关闭,当我没有关联名称时,这可能会让人感到困惑。

【问题讨论】:

标签: c++ multithreading visual-c++


【解决方案1】:

这是你要找的吗:

它的工作原理是引发并简单地处理一个非常特殊的异常,即调试器已知的 0x406D1388。调试器在第一次机会处理期间检索名称并在“线程”窗口中显示该名称。

【讨论】:

  • 好吧,我不确定。我看过那个贴,但它需要一个threadId。我不知道 beginthread 是否接受或返回一个 Id。我知道它返回一个 int,但我不知道这是否被认为是它的 id。
  • @Jason:你能从线程内部设置名称吗?然后你只需传递-1,如示例所示,意思是“当前线程”。
  • @Jason:既然你问了,_beginthread 的返回值不是线程 ID。它是一个句柄,然后可以使用GetThreadId(HANDLE) 函数来获取id。
  • 您应该从示例中复制它,并进行所需的任何更改(例如,如果您要更改另一个线程的名称,则需要传入句柄或 id)。
  • 并使用_beginthreadex,而不是_beginthread_beginthread 创建的线程在运行完成时会关闭返回的句柄,因此在创建线程中使用该句柄可能会导致代码异常(例如,创建的线程可能会运行到完成并在 _beginthread 返回之前关闭句柄到创建线程上的调用者)。
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
相关资源
最近更新 更多