我正在寻找一个如何在VC ++中查找进程内单个线程的CPU利用率的工具。
如果任何人能为我提供工具,那将会非常充实。
如果你们以编程方式提供如何做的话,也可能会更好。
先谢谢你。
答案 0 :(得分:3)
也许使用GetThreadTimes会有帮助吗?
要详细说明该线程是否属于另一个可执行文件,那将是以下行中的某些内容(未经过测试):
// Returns true if thread times could be queried and its results are usable,
// false otherwise. Error handling is minimal, considering throwing detailed
// exceptions instead of returning a simple boolean.
bool get_remote_thread_times(DWORD thread_id, FILETIME & kernel_time, FILETIME & user_time)
{
FILETIME creation_time = { 0 };
FILETIME exit_time = { 0 };
HANDLE thread_handle = OpenThread(THREAD_QUERY_INFORMATION, FALSE, thread_id);
if (thread_handle == INVALID_HANDLE) return false;
bool success = GetThreadTimes(thread_handle, &creation_time, &exit_time, &kernel_time, &user_time) != 0;
CloseHandle(thread_handle);
return success;
}
答案 1 :(得分:3)
尝试使用process explorer ..(工具)..非常实用..
http://download.cnet.com/Process-Explorer/3000-2094_4-10223605.html
答案 2 :(得分:2)
我确定你在这里询问Windows,但为了完整起见,我将描述在Unix系统上可以做到的一种方法。
/ proc文件系统包含有关计算机上所有正在运行的进程的信息。在这个目录中,你会找到系统上每个进程的子目录(由pid命名),这些目录中的每一个都是一个名为stat的文件。查看'man proc'并搜索“stat”条目。此文件包含大量信息,但可以使用几个字段来确定此进程消耗了多少用户和内核模式时间。
掌握了这些知识,找到一个名为“task”的进程的子目录......在这里,你将找到外部进程产生的所有子进程..如果你进入那些,你就是'发现每个都有一个stat文件。