【发布时间】:2011-05-10 05:26:35
【问题描述】:
我知道 POSIX sleep(x) 函数使程序休眠 x 秒。有没有一个函数可以让程序在 C++ 中休眠 x 毫秒?
【问题讨论】:
-
您应该知道,无论如何,在 Windows 中,
Sleep()具有毫秒精度,但它的准确度 可以高出几个数量级。你可能认为你睡了 4 毫秒,但实际上睡了 400 毫秒。 -
@John Dibling:我认为他使用的是 POSIX
sleep,而不是 win32Sleep给定“x 秒”。 -
虽然 C 和 C++ 有不同的名称修饰,这可能是错误和不兼容的根源,但在大多数情况下,在 C++ 中使用 C 头文件是可以的。但是,如果您想绝对确定没有任何问题,请使用
#includeextern "C" {}块内的 C 标头。此外,如果您在同一个项目中有 C 和 C++ 源文件,强烈建议您这样做以避免任何问题,特别是如果您在两种源文件中包含相同的头文件(在这种情况下这是必要的) .如果你有一个纯 C++ 项目,它可能完全没有问题。 -
@JohnDibling 不,不是 400 毫秒。您可能得到的最差精度来自 Windows 9x,其
GetTickCount的分辨率为 55 毫秒;更高版本的分辨率为 16 毫秒或更低。一位用户thought he was getting 16ms resolution from Sleep 但随后报告说Sleep本身相当准确,而明显的不精确是由于使用GetTickCount来衡量时间的流逝造成的。