给一个提升线程命名?

moa*_*ala 17 c++ debugging boost-thread

是否可以为a命名,boost::thread以便调试器表和崩溃日志更具可读性?怎么样?

Mar*_* Ba 6

您需要访问底层线程原语并以系统相关方式分配名称.调试和崩溃日志本质上是系统相关的,而boost :: thread更多的是关于非系统依赖性,即关于可移植性.

似乎(http://www.boost.org/doc/libs/1_43_0/doc/html/thread.html)没有记录的方法来访问升级线程的底层系统资源.(但我自己从未使用过它,所以我可能会错过一些东西.)

编辑:(正如大卫在评论中写的那样)http://www.boost.org/doc/libs/1_43_0/doc/html/thread/thread_management.html#thread.thread_management.thread.nativehandle

  • 对于Linux:http://stackoverflow.com/questions/778085/how-to-name-a-thread-in-linux (13认同)
  • 对于Windows:http://stackoverflow.com/questions/905876/how-to-set-name-to-a-win32-thread (9认同)
  • 对于Mac OS X:http://stackoverflow.com/questions/2057960/how-to-set-a-threadname-in-macosx (7认同)
  • +1,`boost :: thread`有一个`native_handle`方法,可用于检索线程的本机API句柄.您需要深入了解线程库以了解它返回的特定类型以及有关如何使用该句柄为其命名的API文档... (6认同)
  • “...以系统相关的方式” 使用系统 API 对线程执行任何操作(例如创建线程)也是如此。boost 的重点是将这些各种依赖于平台的 API 包装在一个可移植的 API 中。正如您所说,“boost::thread 是……关于可移植性的”。这是赞成 boost 具有“设置线程名称”方法的一个论点。 (2认同)