新的 C++ 有这个 std::thread 类型。奇迹般有效。现在我想给每个线程一个名称以便于调试(就像 java 允许的那样)。使用 pthreads 我会这样做:
pthread_setname_np(pthread_self(), "thread_name");
但是我怎么能用 c++0x 做到这一点?我知道它在 Linux 系统下使用 pthreads,但我想让我的应用程序可移植。有可能吗?
原文由 Folkert van Heusden 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种可移植的方法是维护一个名称映射,由线程 ID 键入,从
thread::get_id()
获得。或者,如评论中所建议的,如果您只需要从线程内访问名称,您可以使用thread_local
变量。如果您不需要可移植性,那么您可以从 --- 获取底层的
pthread_t
thread::native_handle()
并使用它做任何特定于平台的恶作剧。请注意,线程命名函数上的_np
表示“非 posix”,因此不能保证它们在所有 pthreads 实现中都可用。