【发布时间】:2014-09-29 00:57:56
【问题描述】:
我正在使用boost::thread(在下一步中使用pthread),但想通过boost::thread 指针获取线程ID/(轻量级)pid。我设法通过使用成员 native_handle() 在 Windows 上做到这一点,但我找不到 linux 的替代方案。
boost::thread * boost_thread ptr = new boost::thread(/*...*/);
ptr->native_handle();
我发现很多关于 current 线程的帖子都使用 pthread_self() 之类的东西,但我不想从这个线程中获取线程 ID,我想从我刚刚使用new boost::thread 创建的线程的外部。有没有办法通过使用本机句柄或 boost::thread 结构中的某些东西来检索线程 id/pid?
非常感谢!
编辑:不重复导致其他线程无法解决此问题...至少在从boost::thread 获取pthread_t 时不会,因此对它的创建没有影响。或以如下方式解决:不可能。
【问题讨论】:
-
boost::thread::native_handle()在 Linux 上为线程返回pthread_t。因此,您的问题实际上是重复的。 -
您需要 linux 线程 ID 做什么?您使用 boost::thread,因此您显然没有实现自己的线程库,那么为什么需要访问内核详细信息?
-
所以如果我正确理解另一个线程是不可能的?
-
@user2079303:我想要这个用于调试目的。我想在 htop 中查看结果并与我的日志进行比较,同时以与当前在 windows 中相同的方式使用 linux。但为此,我需要将我的内部线程视图与外部线程视图进行比较(例如 htop)
-
我检查了
pthread_t的定义,它似乎不会让我在短期内得到任何结果。这些字段似乎没有我需要的:void * handle; void *(* func )(void *arg); void * arg; void * ret;
标签: c++ linux pthreads boost-thread