【问题标题】:linux get all threads started by this processlinux获取此进程启动的所有线程
【发布时间】:2015-05-24 03:06:08
【问题描述】:

在使用 C++ 的 Linux 中,有没有办法以编程方式获取已为此进程启动的所有 pthread_ts 的列表?我知道你可以看看:

/proc/$(getpid())/task/

但是有没有一个库调用已经这样做了?

【问题讨论】:

    标签: c++ linux pthreads


    【解决方案1】:

    不,而且有充分的理由。假设一个库创建了一个线程。对于该线程,您可以使用pthread_t 做什么有用的事情。此外,即使你得到了pthread_t,你也不能将它用于任何事情,因为线程可以在返回给你后立即终止(或加入),这将导致使用它的行为未定义。

    如果您可以为pthread_t 做一些有用的事情,因为您知道它在做什么或它是如何编码的以及它何时有效,您还可以跟踪pthread_t

    【讨论】:

    • 您可能正在编写一个层来报告进程中的线程信息/活动。 Windows 有一组 Thread32First/Thread32Next 函数,用于遍历进程中的所有线程。
    • @Sean 但无论如何你都做不到。除了计算pthread_ts 列表之外,您无能为力,因为访问它们是非法的(因为它们可能不再有效,因为线程可以随时终止或加入)。
    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多