1. Sleep() :让当前线程停下来
用 法:
unsigned sleep(unsigned seconds);
在VC中使用带上头文件 #include <windows.h>
在gcc编译器中,使用的头文件因gcc版本的不同而不同 #include <unistd.h>
注意:
在VC中Sleep中的第一个英文字符为大写的"S";在标准C中是sleep,不要大写,简单的说VC用Sleep,别的一律使用sleep
其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
在Linux下,sleep中的“s”不大写,sleep()里面的单位是秒,而不是毫秒。在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
2. WaitForSingleObject() :自己停下来,等待某件事发生
VC声明
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds);
参数
hHandle [in]对象句柄。可以指定一系列的对象,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。
当等待仍在挂起状态时,句柄被关闭,那么函数行为是未定义的。该句柄必须具有 SYNCHRONIZE 访问权限。
dwMilliseconds [in]定时时间间隔,单位为milliseconds(毫秒).如果指定一个非零值,函数处于等待状态直到hHandle 标记的对象被触发,或者时间到了。如果dwMilliseconds 为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds 为INFINITE,对象被触发信号后,函数才会返回。
链接: http://msdn.microsoft.com/en-us/library/ms687032
3. GetTickCount() :有人把tick翻译为嘀嗒,很形象,记录开机以来CPU所记录的毫秒值,返回值为DWORD,最多记录49.7天
函数原型: DWORD GetTickCount(void);
库文件:kernl32.dll
C/C++头文件: winbase.h
windows程序设计中可以使用头文件 windows.h
链接:http://msdn.microsoft.com/en-us/library/ms724408
4. QueryPerformanceFrequency()、QueryPerformanceCount():获取更高的CPU数据
函数原型: BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount); 數據類型LARGE—INTEGER既可以是一個作為8字節長的整型數,也可以是作為兩個4字節長的整型數的聯合結構,其具體用法根據編譯器是否支持64位而定。該類型的定義如下: typedef union _LARGE_INTEGER { struct { DWORD LowPart; // 4字節整型數 LONG HighPart; // 4字節整型數 }; LONGLONG QuadPart; // 8字節整型數 } LARGE_INTEGER; eg. 我的主频是2.43G,QueryPerformanceFrequency() 得到的结果就是2430040000。链接: http://msdn.microsoft.com/en-us/library/ms961334.aspx
http://msdn.microsoft.com/en-us/library/ms961332.aspx
5. timeGetSystemTime():另一个得到高精度系统时间的方法,函数返回系统时间,(毫秒)。这里的系统时间是指自从系统启动时到调用该函数时的时间间隔。
函数原型:
MMRESULT timeGetSystemTime(LPMMTIME pmmt, UINT cbmmt);
参数pmmt[in] 指向一个 MMTIME 结构的指针 cbmmt[in] MMTIME 结构的大小(字节)返回值
返回 TIMERR_NOERROR.
系统时间返回在MMTIME结构的ms成员里。
备注
该函数的操作方式与 timeGetTime 函数相同.该函数就是再timeGetTime上面封装了已成,其还是调用timeGetTime实现的。
Header: Mmsystem.h
Link Library: Mmtimer.lib
链接: http://msdn.microsoft.com/en-us/library/ms713417.aspx
6. PerformanceCounter:效能计数器
链接:PerformanceCounter简述及用法 http://blog.csdn.net/luols/article/details/5849434
7. GetProcessorInfo()/SetThreadAffinityMask:遇得到多核问题,能帮助更好的控制CPU
[This method is available for use only in Windows Server 2003.]
Applies to: desktop apps only. Retrieves the processor information for the node.
Syntax
HRESULT GetProcessorInfo(
[out] WORD *pwProcessorArchitectureOut;
[out] WORD *pwProcessorLevelOut;
);
链接: http://msdn.microsoft.com/en-us/aa370143(VS.85).aspx
SetThreadAffinityMask : 设置使用多核CPU的哪个核心
呃,这个msdn貌似没有,百度也没查到什么有用的东西,大家要用的话望文生义猜猜试试吧~~~