【发布时间】:2015-05-24 03:06:08
【问题描述】:
在使用 C++ 的 Linux 中,有没有办法以编程方式获取已为此进程启动的所有 pthread_ts 的列表?我知道你可以看看:
/proc/$(getpid())/task/
但是有没有一个库调用已经这样做了?
【问题讨论】:
在使用 C++ 的 Linux 中,有没有办法以编程方式获取已为此进程启动的所有 pthread_ts 的列表?我知道你可以看看:
/proc/$(getpid())/task/
但是有没有一个库调用已经这样做了?
【问题讨论】:
不,而且有充分的理由。假设一个库创建了一个线程。对于该线程,您可以使用pthread_t 做什么有用的事情。此外,即使你得到了pthread_t,你也不能将它用于任何事情,因为线程可以在返回给你后立即终止(或加入),这将导致使用它的行为未定义。
如果您可以为pthread_t 做一些有用的事情,因为您知道它在做什么或它是如何编码的以及它何时有效,您还可以跟踪pthread_t。
【讨论】:
Thread32First/Thread32Next 函数,用于遍历进程中的所有线程。
pthread_ts 列表之外,您无能为力,因为访问它们是非法的(因为它们可能不再有效,因为线程可以随时终止或加入)。