C++ Sleep()函数的用法
这是一个示例pgm,用于检查Sleep()函数的功能。这只是一个演示,因为我在我的应用程序开发中使用了Sleep()和clock()函数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
// 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";
}