休眠几毫秒
我知道 POSIX sleep(x)
函数使程序休眠 x 秒。 C++ 中是否有一个函数可以让程序休眠 x 毫秒?
I know the POSIX sleep(x)
function makes the program sleep for x seconds. Is there a function to make the program sleep for x milliseconds in C++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(19)
在 C++11 中,您可以使用标准库工具来完成此操作:
清晰易读,不再需要猜测
sleep()
函数采用的单位。In C++11, you can do this with standard library facilities:
Clear and readable, no more need to guess at what units the
sleep()
function takes.请注意,没有针对毫秒的标准 C API,因此(在 Unix 上)您将不得不使用
usleep
,它接受微秒:Note that there is no standard C API for milliseconds, so (on Unix) you will have to settle for
usleep
, which accepts microseconds:为了保持便携性,您可以使用 Boost::Thread睡觉:
这个答案是重复的,并已发布在此问题< /a> 之前。也许您也可以在那里找到一些有用的答案。
To stay portable you could use Boost::Thread for sleeping:
This answer is a duplicate and has been posted in this question before. Perhaps you could find some usable answers there too.
在 Unix 中,您可以使用
usleep
。在 Windows 中,有
睡眠
< /a>.In Unix you can use
usleep
.In Windows there is
Sleep
.从 C++14 开始,使用 std 及其数字文字:
From C++14 using std and also its numeric literals:
根据您的平台,您可能有
usleep
或nanosleep
可用。usleep
已弃用,并已从最新的 POSIX 标准中删除;nanosleep
是首选。Depending on your platform you may have
usleep
ornanosleep
available.usleep
is deprecated and has been deleted from the most recent POSIX standard;nanosleep
is preferred.为什么不使用 time.h 库?在 Windows 和 POSIX 系统上运行(不要在生产中使用此代码!):
CPU 保持 IDLE 状态:
Why don't use
time.h
library? Runs on Windows and POSIX systems (don't use this code in production!):CPU stays in IDLE state:
nanosleep
是比usleep
更好的选择 - 它对中断更具弹性。nanosleep
is a better choice thanusleep
- it is more resilient against interrupts.语法:
用法:
Syntax:
Usage:
如果使用 MS Visual C++ 10.0,您可以使用标准库工具来完成此操作:
您将需要:
If using MS Visual C++ 10.0, you can do this with standard library facilities:
you will need:
在具有
select
功能的平台(POSIX、Linux 和 Windows)上,您可以这样做:但是,现在有更好的替代方案。
On platforms with the
select
function (POSIX, Linux, and Windows) you could do:However, there are better alternatives available nowadays.
Select 调用是一种更精确的方法(睡眠时间可以以纳秒为单位指定)。
Select call is a way of having more precision (sleep time can be specified in nanoseconds).
在 C++ 中让程序休眠的方法是
Sleep(int)
方法。它的头文件是#include "windows.h."
例如:
它的睡眠时间以毫秒为单位,没有限制。
The way to sleep your program in C++ is the
Sleep(int)
method. The header file for it is#include "windows.h."
For example:
The time it sleeps is measured in milliseconds and has no limit.
C++14:休眠 10 秒:
10 毫秒使用
10ms
C++14: sleep for 10 seconds:
for 10 milliseconds use
10ms
使用Boost异步输入/输出线程,休眠x毫秒;
Use Boost asynchronous input/output threads, sleep for x milliseconds;
来自一个答案的优雅解决方案,经过一点修改。如果没有更好的功能可用,可以轻松添加 select() 用法。只需制作使用 select() 等的函数即可。
代码:
Elegant solution from the one answer, bit modified.. One can easilly add select() usage if there's no better functionality available. Just make function that uses select() etc. ..
Code:
作为 POSIX 系统的 Win32 替代品:
As a Win32 replacement for POSIX systems:
这个问题很老了,但我设法找到了一种简单的方法来将其添加到我的应用程序中。您可以创建一个 C/C++ 宏,如下所示使用它:
The question is old, but I managed to figure out a simple way to have this in my app. You can create a C/C++ macro as shown below use it:
我用这个:
示例:
I use this:
example: