標頭檔案 #include
1. sleep() 函式
c++中的延遲函式,能夠讓當前的執行緒停下來。引數是毫秒
2. gettickcount() 函式
函式原型為dword gettickcount(void);
返回從作業系統啟動到現在所經過的毫秒數。
由於返回型別為dword,所以經過足夠長的時間,返回值一定會溢位,從而又回到零。
我們知道dword在標頭檔案windef.h中定義如下:
typedef unsigned long dword; 即四位元組無符號整數,能表示的最大值為2^32-1 = 4,294,967,295,一天有24*60*60*1000 = 86,400,000毫秒,4,294,967,295 / 86,400,000 = 49.71,因此若作業系統連續執行49.71天,這個數字會回到0。
3. timegetsystemtime() 函式
使用mmtime結構返回系統時間。該函式的操作
方式與timegettime()
函式相同.該函式就是再timegettime上面封裝了一層,其還是呼叫timegettime實現的。該函式比timegettime需要更多的時間開銷。
4. waitforsingleobject() 函式
停下來,等待某個事件發生。
5. performancecounter
效能計數器。
6. getcputickcount() 函式
使用rdtsc指令獲取當前cpu核心執行週期數。
7. getprocessorinfo() 函式
獲取當前系統的一些資訊,是windows server上的api。獲取機器中的處理器個數,也可以用getsysteminfo()。和setthreadaffinitymask()函式結合使用,能更好的控制處理器。
8. setthreadaffinitymask() 函式
設定執行緒在多核cpu的哪個核上執行
函式原型為:
dword _ptr winapi setthreadaffinitymask(
__in handle hthread,
__in dword_ptr dwthreadaffinitymask
);
9.queryperformancefrequency
() 函式
獲取定時器的頻率。
原型:bool queryperformancefrequency(large_integer *lpfrequency);
返回值:非0,硬體支援高精度計數器; 為0,硬體不支援,讀取失敗
資料型別large_integer既可以是乙個作為8位元組長的整數,也可以是作為兩個4位元組長的整數的聯合結構,其具體用法根據編譯器是否支援64位而定。該型別的定義如下:
typeef union _large_integer;
longlong quadpart;
} large_integer;
10. queryperformancecounter() 函式
查詢效能計數器,能夠精確的計時。如果硬體有定時器,它會啟動這個定時器,且不斷獲取定時器的值,這時的定時器精度和硬體時鐘的晶振一樣精確。函式原型為:
bool queryperformancecounter(
large_integer *lpperformancecount // address of current counter value 當前計數器值的位址
); queryperformancecounter() 和queryperformancefrequency
() 這兩個函式配合,計算出事件的精確時間。
舉個例子,計算sleep(1000)的精確時間,**如下:
#include #include void main()
執行兩次,輸出結果分別為1.000548、1.000087。所以sleep()的精度還是不夠高。
幫助了解當前執行緒 程序 系統效能的API
1.sleep 這個方法能讓當前執行緒 停 下來。2.waitforsingleobject 自己停下來,等待某個事件發生。3.gettickcount 有人把tick翻譯成 滴答 很形象。4.queryperformancefrequency queryperformancecounter 讓你訪...
std thread中獲取當前執行緒的系統id
std thread不提供獲取當前執行緒的系統id的方法,僅可以獲取當前的執行緒id,但是我們可以通過建立索引表的方式來實現 1 std mutex m 2 std mapthreads 3void48 void wrap void f 9 而後用其建立執行緒 1 std thread t1 wra...
Windows Linux下獲取當前執行緒的ID號
序 在多執行緒場合,為了方便跟蹤執行緒的執行狀態,往往需要在程式中新增列印當前執行緒id號的功能。1.linux下列印當前執行緒idpthread t pthread self 2.windows下列印當前執行緒iddword getcurrentthreadid ifdef win32 inclu...