这个问题不是关于pthread,而是关于通常由gettid或ptrace获得的值。
linux内核是否提供了任何机制来以相对有效的方式从给定的tid获取线程组id (通常由getpid获得)?不需要io或解析的东西?
唯一的方法似乎是open /proc/TID/status,将文件read到缓冲区中,逐行扫描Tgid,然后将字符串解析为无符号整数。
我希望我错过了一个syscall,它返回给定pid的tgid/ pid,即使id是在某个数据结构中间接返回的。
发布于 2018-09-10 16:34:02
似乎没有这样的系统调用。信息只能从/proc检索,而您当前的解决方案看起来是最有效的方式。
发布于 2019-03-25 19:13:07
只是对已有的答案进行补充。事实上,在Linux上没有更好的替代方案。我自己在寻找更好的东西,我发现了这个项目,它试图提供一些更有用的编程方式:
然而,这些都不是上游的,可能是因为目前真正关心这个问题的人太少了。它主要关注高性能操作系统级跟踪应用程序和实时应用程序,这些应用程序在Linux中还处于起步阶段。
一个有趣的事实是,其他类似的OSes没有这个问题(OpenBSD,QNX,...)
https://stackoverflow.com/questions/52252891
复制相似问题