C++ Sleep()函数的用法

C++ Sleep()函数的用法,c++,sleep,clock,timing,C++,Sleep,Clock,Timing,这是一个示例pgm,用于检查Sleep()函数的功能。这只是一个演示,因为我在我的应用程序开发中使用了Sleep()和clock()函数 // TestTicks.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<iomanip> #include <Windows.h&g

这是一个示例pgm,用于检查Sleep()函数的功能。这只是一个演示,因为我在我的应用程序开发中使用了Sleep()和clock()函数

  // TestTicks.cpp : Defines the entry point for the console application.
  //

  #include "stdafx.h"
  #include<iostream>
  #include<iomanip>
  #include <Windows.h>

  int _tmain(int argc, _TCHAR* argv[])
  {
    int i, i2;
    i = clock();
    //std::cout<<" \nTime before Sleep() : "<<i;
    Sleep(30000);
    i2 = clock();
    //std::cout<<" \nTime After Sleep() : "<<i2;
    std::cout<<"\n Diff : "<<i2 -i;
    getchar();
      return 0;
  }
//TestTicks.cpp:定义控制台应用程序的入口点。
//
#包括“stdafx.h”
#包括
#包括
#包括
int _tmain(int argc,_TCHAR*argv[]
{
inti,i2;
i=时钟();

//除非您使用的是实时操作系统,否则这是非常值得期待的

操作系统必须安排和运行许多其他进程,因此唤醒您的进程可能与您想要睡眠的确切时间不匹配。

根据:

系统时钟以恒定的速率“滴答”着。如果DWM毫秒小于系统时钟的分辨率,线程的睡眠时间可能小于指定的时间长度。如果DWM毫秒大于一个滴答但小于两个滴答,则等待时间可能在一到两个滴答之间,依此类推

这只是意味着Sleep函数永远不会在给定的时间内完全休眠,而是在给定调度程序的分辨率的情况下尽可能地接近

如果确实需要,同一页提供了一种提高计时器分辨率的方法

还有一些可能更适合您的需要。

该函数告诉调用进程使用了多少处理器时间

您可以使用函数替换clock()的用法 为了更准确地测量时间

此外,您还可以尝试与调用返回的wPeriodMin一起使用,以获得最大中断频率

为了使睡眠与系统中断周期同步,我还建议 在第一次“时间捕捉”之前睡觉(1)

这样一来,“太短”就会消失

有关NT睡眠的更多信息,请参见 #包括 无效等待(整数秒) { 内部等待; endwait=clock()+秒*每秒时钟数; while(clock()非常感谢您的宝贵意见。我还发现clock()函数是基于进程时钟信号工作的。但是Sleep()函数只属于VS..right???时钟属于C标准库,而Sleep是一个Windows API函数。在GNU系统上,等效的是nanosleep。虽然可能有用,但这并不能回答所提出的问题。
#include <iostream> 
#include <time.h>  

void wait(int seconds) 
{ 
    int endwait; 
    endwait = clock() + seconds * CLOCKS_PER_SEC ; 
    while (clock() < endwait){} 
} 

int main() 
{ 
    wait(2);
    cout<<"2 seconds have passed";
}