GetThreadTimes獲取其它執行緒cpu時間

2022-07-23 07:57:11 字數 1790 閱讀 6560

鄙視下上面的垃圾博文,純粹忽悠人

參考文章:

這是乙個德國人寫的部落格,我看了好幾遍,對他寫的德式英語還是不太明白,(本人英文水平不高也是事實),所以我理解的不對的地方還望大家指正。不過結論肯定是正確的,就是通過getthreadtimes 得到的執行緒占用時間是不準確的,在某種條件下甚至是很不準確的。

另外我發現呼叫getthreadtimes獲取其它執行緒的計數基本得不到,我還沒有搞明白是什麼原因。

搞不明白不去看官方文件!!!!!!!!!!!!檢視msdn 裡getthreadtimes的文件
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

裡看到thread_query_information,結合說明得出thread_query_information是安全描述符的乙個標誌,所以又檢視下面這篇文章學習如果建立使用
creating a security descriptor for a new object in c++
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)

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);

成功執行如下

ProceedingJoinPoint獲取當前方法

aspectj切面通過proceedingjoinpoint想要獲取當前執行的方法 錯誤方法 signature s pjp.getsignature methodsignature ms methodsignature s method m ms.getmethod 這種方式獲取到的方法是介面的方...

android audioManager獲取音量

通過程式獲取android 系統 手機的鈴聲和音量。同樣,設定鈴聲和音量的方法也很簡單!audiomanager maudiomanager audiomanager getsystemservice context.audio service 通話音量 int max maudiomanager....

HttpURLConnection請求獲取資料。

public class urlconnect system.out.println s public static string urlconnectxml string urlstr,string jsonstring throws exception bufferedreader.close ...