如果我搜索计算应用程序的线程数,所有的答案都涉及外部程序,如top
。我想要统计应用程序本身内的线程。如何计算正在运行的线程数(pthreads)?
我不能在线程创建点添加代码,因为它发生在一个不可变的库中。我不能读/proc
。
这是一个在几个不同的Unices上运行的C/pthreads程序。
如果我搜索计算应用程序的线程数,所有的答案都涉及外部程序,如top
。我想要统计应用程序本身内的线程。如何计算正在运行的线程数(pthreads)?
我不能在线程创建点添加代码,因为它发生在一个不可变的库中。我不能读/proc
。
这是一个在几个不同的Unices上运行的C/pthreads程序。
如果您无法读取/proc
你有麻烦了一点,除非你的程序与其他程序读取/proc
如果你不想读的,因为便携关注的/ proc沟通,你可以使用一个抽象的图书馆,如libproc
确实
感谢libproc的提示,但它在这个锁定的环境中不起作用。引入一个新的库是一个禁忌。 – spraff
使用top -H。但是很可能,如果你不能读取proc,top将无法工作。如果是这样的话,就没有简单的方法,这取决于你的具体系统。
“man ps”,看看'线程'。例如“ps -TF -p $ pid”,如果你需要远程控制,你可以使用via ssh运行。 – bestsss
这必须由我的应用程序完成,而不是通过调用另一个应用程序。 – spraff
Pthreads没有用于计算线程的API,它甚至不保证获得多个内核线程。你可以“追踪(2)”你的过程,但这只是你用来调试的黑客。 – rlibby