我正在开发一个函数来计算每个进程的线程数,我看到在结构eprocess中有一个名为threadlisthhead的变量,它指向一个指针,该指针连接进程中的所有线程。我想问如果进程中没有线程,threadlisthead的值是多少?是空的还是什么?请帮帮我,非常感谢。

最佳答案

ThreadListHead是表示列表头的LIST_ENTRY结构。
LIST_ENTRY is documented:如果列表为空,则FlinkBlink成员都指向ThreadListHead本身。
但是,您需要非常小心地阅读ThreadListHead。由于eprocess的结构没有正式的文档记录,它可能会在没有通知的情况下更改;而且,您无法知道如何在多核计算机上正确同步对它的访问,因此当您查看它时,线程列表可能会以不可预知的方式更改。

08-16 02:52