编程之美小结1——系统线程、进程、系统效能API

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

IClusCfgNodeInfo::GetProcessorInfo method: 获取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的哪个核心



8. GetCPUTickCount():获取CPU核心运行周期数

呃,这个msdn貌似没有,百度也没查到什么有用的东西,大家要用的话望文生义猜猜试试吧~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值