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 Rightshttp://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);


 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫敏璋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值