gpt4 book ai didi

linux - 用于查看线程何时处于事件状态的系统 API

转载 作者:太空狗 更新时间:2023-10-29 12:26:07 39 4
gpt4 key购买 nike

是否有适用于 Linux 和 Darwin 的低级系统 API,以获取调度程序的“快照”,查看哪些线程在给定时间正在运行(事件)、抢占、等待资源等?

例如,Ubuntu“系统监视器”有一个进程的“等待 channel ”列,有没有办法为进程内的所有线程获得类似的输出?

我有一个多线程排队系统,其中将作业分派(dispatch)给线程,并用可视时间线显示作业何时开始/完成。为了优化它,我想添加一些视觉指示,指示作业实际运行的时间(例如在一个处理器内核上),以及它们何时被抢占。

最佳答案

top -H显示线程及其状态。在 its source 中的 -H 开关之后将是找出答案的一种方法。快速看一下,函数int cmd_threads(globalstate *gstate)commands.c似乎切换设置。

更新:Procfs 将该信息提供给用户空间。 /proc/<pid>/task/<thread-id>/status提供您所需要的。这就是top也用。这是我系统的示例输出:

$ cat /proc/418/task/448/status | grep State
State: S (sleeping)

该目录下有更多有用的详细信息。

关于linux - 用于查看线程何时处于事件状态的系统 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39770811/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com