Gil*_*il' 22
似乎没有任何可移植的方法来枚举进程中的线程.
Linux有pthread_kill_other_threads_np一个看起来像原始纯用户空间pthreads实现的剩余部分,可能会或可能不会像今天所记录的那样工作.它没有告诉你有多少线程.
您可以通过查看/proc/self(或其他流程/proc/123)获得有关您的流程的大量信息.尽管许多unices都有一个具有该名称的文件或目录,但布局完全不同,因此使用的任何代码/proc都是特定于Linux的.的文件/proc是Documentation/filesystems/proc.txt在内核源代码.特别是,/proc/self/task每个线程都有一个子目录.子目录的名称是LWP id; 不幸的是,[1] [2] [3]似乎没有办法将LWP ID与pthread id相关联(但gettid(2)如果你为它工作,你可以得到你自己的线程id ).当然,阅读/proc/self/task不是原子的; 通过原子方式可以获得线程数/proc/self/status (当然,在你采取行动之前它可能会改变).
如果使用Linux pthreads提供的有限支持无法实现您想要的功能,另一种策略是使用动态链接技巧将您自己的pthread_create日志版本提供给您之后可以检查的数据结构.