GetThreadTimes获取其它线程cpu时间
http://www.cnblogs.com/eaglet/archive/2009/03/11/1408809.html
鄙视下上面的垃圾博文,纯粹忽悠人
参考文章:
http://blog.kalmbachnet.de/?postid=28
这是一个德国人写的博客,我看了好几遍,对他写的德式英语还是不太明白,(本人英文水平不高也是事实),所以我理解的不对的地方还望大家指正。不过结论肯定是正确的,就是通过GetThreadTimes 得到的线程占用时间是不准确的,在某种条件下甚至是很不准确的。
另外我发现调用GetThreadTimes获取其它线程的计数基本得不到,我还没有搞明白是什么原因。
搞不明白不去看官方文档!!!!!!!!!!!!
查看msdn 里GetThreadTimes的文档http://msdn.microsoft.com/en-us/library/windows/desktop/ms683237(v=vs.85).aspx
BOOL WINAPI GetThreadTimes(
_In_ HANDLE hThread,//需要获取cpu时间的线程句柄
_Out_ LPFILETIME lpCreationTime,//创建时间
_Out_ LPFILETIME lpExitTime,//退出时间
_Out_ LPFILETIME lpKernelTime,//内核时间
_Out_ LPFILETIME lpUserTime//用户时间
);
hThread
其计时信息寻求的线程的句柄。该句柄必须具有的 THREAD_QUERY_INFORMATION 或 THREAD_QUERY_LIMITED_INFORMATION 访问权。有关详细信息,请参见线程安全和访问权限。
Windows Server 2003 和 Windows XP: 句柄必须具有的 THREAD_QUERY_INFORMATION 的访问权限。
在这篇文章
Thread Security and Access Rights
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686769(v=vs.85).aspx
里看到THREAD_QUERY_INFORMATION,结合说明得出THREAD_QUERY_INFORMATION是安全描述符的一个标志,所以又查看下面这篇文章学习如果创建使用
Creating a Security Descriptor for a New Object in C++ http://msdn.microsoft.com/zh-cn/library/aa446595.aspx
FILETIME ftKernelTimeStart, ftKernelTimeEnd;
FILETIME ftUserTimeStart, ftUserTimeEnd;
FILETIME ftDummy; HANDLE hThread;
unsigned threadID; SECURITY_ATTRIBUTES saThread;
PSECURITY_DESCRIPTOR pSD = NULL; //PSECURITY_DESCRIPTOR安全描述符
pSD = (PSECURITY_DESCRIPTOR)LocalAlloc(LPTR,
THREAD_QUERY_INFORMATION);
if (NULL == pSD)
{
_tprintf(_T("LocalAlloc Error %u\n"), GetLastError());
} saThread.nLength = sizeof(saThread);
saThread.lpSecurityDescriptor = pSD; hThread = (HANDLE)_beginthreadex(&saThread, 0, FirstThread, NULL, 0, &threadID); if(pSD)
LocalFree(pSD);
GetThreadTimes(hThread, &ftDummy, &ftDummy,
&ftKernelTimeStart, &ftUserTimeStart);
成功执行如下
GetThreadTimes获取其它线程cpu时间的更多相关文章
- java程序中线程cpu使用率计算
原文地址:https://www.imooc.com/article/27374 最近确实遇到题目上的刚需,也是花了一段时间来思考这个问题. cpu使用率如何计算 计算使用率在上学那会就经常算,不过往 ...
- CPU高获取其线程ID然后分析
一.具体步骤 shift+p 按照cpu排序 shift+m按照内存排序 1.查看进程下所有线程 top -H -p pid 2.将十进制数换成16进制:print "%x/n" ...
- 分享自己做的一个指定进程以及线程长时间cpu监控的工具
前言: 前面给大家分享过一个工作中用到的编译拷贝脚本,其实工作中还有一些其他工具的使用,今天再来分享一个自己纯手工的CPU监控的脚本.大家可以结合上篇文章与本篇文章一起学习shell. 主要实现功能: ...
- 找出进程中各线程cpu消耗情况
以root用户执行以下命令,以PID 5423举例: 1,根据top命令,找到占用CPU高的进程,找到PID PID USER PR NI VIRT RES SHR S %CPU ...
- 墙上时钟时间 ,用户cpu时间 ,系统cpu时间
一. 墙上时钟时间 ,用户cpu时间 ,系统cpu时间定义与联系 时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间 ...
- [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)
github地址:https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...
- Python建立多线程任务并获取每个线程返回值
1.进程和线程 (1)进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.进程也可以派生新的进程来执行其他任务,不过每个新进程都拥有自己的内存和数据栈,所 ...
- cpu时间 / cpu利用率计算
CPU时间即反映CPU全速工作时完成该进程所花费的时间 cpu时间计算CPU TIME = (# of CPU Clock Cycles) x Clock Period // “#” 表示消耗 ...
- java 获取系统信息及CPU的使用率(转)
java 获取系统信息及CPU的使用率 原文:http://kakaluyi.javaeye.com/blog/211492 最近做个项目,就是要取得cpu占有率等等的系统信息,一开始以为要用动态链接 ...
随机推荐
- [Python] 数据结构--实现顺序表、链表、栈和队列
说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...
- Python基础学习笔记(一)python发展史与优缺点,岗位与薪资
相信有好多朋友们都是第一次了解python吧,可能大家也听过或接触过这个编程语言.那么到底什么是python呢?它在什么机缘巧合下诞生的呢?又为什么在短短十几年时间内就流行开来呢?就请大家带着疑问,让 ...
- Jedis操作Redis--Key操作
/** * Key(键) * DEL,DUMP,EXISTS,EXPIRE,EXPIREAT,KEYS,MIGRATE,MOVE,OBJECT,PERSIST,PEXPIRE,PEXPIREAT,PT ...
- ElasticSearch专栏
1.es的分布式架构原理(es是如何实现分布式)? elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的.核心思想就是在多台机器上启动多个es进程实例,组成了一个es ...
- 【Linux命令】lsmod命令
lsmod(list modules)命令 lsmod命令用来显示已被内核加载的模块的状态 1)语法:lsmod 2)功能: lsmod命令可以美观地显示/prco/module中的内容,这些内容是被 ...
- [python]代码中包含中文,提示:SyntaxError: Non-ASCII character '\xcd'
解决方法: 把文件编码方式改为gbk即可.在代码开头写上: # coding=gbk
- codeforces 814 C. An impassioned circulation of affection(二分+思维)
题目链接:http://codeforces.com/contest/814/problem/C 题意:给出一串字符串然后q个询问,问替换掉将m个字符替换为字符c,能得到的最长的连续的字符c是多长 题 ...
- lightoj 1030-B - Discovering Gold (概率dp)
题意:有一个直线的金矿,每个点有一定数量的金子:你从0开始,每次扔个骰子,扔出几点就走几步, 然后把那个点的金子拿走:如果扔出的骰子超出了金矿,就重新扔,知道你站在最后一个点:问拿走金 子的期望值是多 ...
- SPOJ - QTREE(树链剖分+单点更新+区间最大值查询)
题意:给出n个点n-1条边的树,有两个操作,一个是查询节点l到r的边的最大值,然后指定边的更改权值. 题解:差不多是树链剖分的模版题,注意每个点表示的边是连向其父亲节点的边. #include < ...
- Git的合并
merge: A---B---C topic / D---E---F---G master A---B---C topic / \ D---E---F---G---H master (在当前的bran ...