【发布时间】:2011-12-16 07:52:48
【问题描述】:
如果我搜索计算应用程序的线程数,所有答案都涉及外部程序,例如top。我想计算应用程序本身的线程数。
我无法在创建线程时添加代码,因为它发生在不可变库中。
我看不懂/proc。
这是一个在几个不同的 Unices 上运行的 C/pthreads 程序。
【问题讨论】:
-
"man ps" 并查看“线程”。例如“ps -TF -p $pid”,如果你需要远程控制,我猜你可以通过 ssh 运行。
-
这必须由我的应用程序完成,而不是通过调用另一个应用程序。
-
Pthreads 没有用于计算线程的 API,它甚至不能保证您获得多个内核线程。你可以
ptrace(2)你的进程,但这是一个你只能用于调试的hack。 -
pthreads 设计的一个主要点是它可以完全透明(对程序的其余部分)一个函数是否使用多个线程实现。如果您尝试计算线程数,那么您可能做错了什么。对于您自己创建的线程,您可以使用信号量(在启动时发布,退出时等待)或您在互斥锁控制下修改的计数器安全地对它们进行计数。
-
“完全透明”?我不买那个。这意味着没有关键部分,没有
gettid...
标签: c multithreading unix pthreads posix