gpt4 book ai didi

c++ - Sleep() 函数用法

转载 作者:可可西里 更新时间:2023-11-01 18:28:40 59 4
gpt4 key购买 nike

这是一个示例 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;
}

在这段代码中,我在 sleep 函数前后使用 clock() 计算时间。由于我使用 sleep(30000),时间差至少为 30000。

我已经多次运行这个 prgm。打印输出为 30000、30001、30002。这些都可以。但有时我会得到像 29999 和 29997 这样的值。这怎么可能,因为我将 30000 sleep b/w 时钟 ()。

请说出原因

最佳答案

根据 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx :

The system clock "ticks" at a constant rate. If dwMilliseconds is less than the resolution of the system clock, the thread may sleep for less than the specified length of time. If dwMilliseconds is greater than one tick but less than two, the wait can be anywhere between one and two ticks, and so on.

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

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

还有high resolution timers这可能更符合您的需求。

关于c++ - Sleep() 函数用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825135/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com