我知道POSIX休眠(x)函数使程序休眠x秒。C++中是否有一个函数可以让程序休眠x毫秒?
当前回答
这个问题由来已久,但我设法找到了一个在我的应用程序中实现这一点的简单方法。您可以创建如下所示的C/C++宏:
#ifndef MACROS_H
#define MACROS_H
#include <unistd.h>
#define msleep(X) usleep(X * 1000)
#endif // MACROS_H
其他回答
对于C,在gcc中使用///。
#包括<windows.h>
然后使用Sleep();///Sleep()带有大写S,而不是Sleep()带有S。
//睡眠(1000)可能是1秒///。
clang支持sleep(),sleep(1)表示1秒延时/等待。
在C++11中,您可以使用标准库设施来实现这一点:
#include <chrono>
#include <thread>
std::this_thread::sleep_for(std::chrono::milliseconds(x));
清晰易读,无需猜测sleep()函数使用的单位。
在Unix中,您可以使用usleep。
在Windows中有“睡眠”。
在C++中休眠程序的方法是sleep(int)方法。它的头文件是#include“windows.h”
例如:
#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;
int main()
{
int x = 6000;
Sleep(x);
cout << "6 seconds have passed" << endl;
return 0;
}
它的睡眠时间以毫秒为单位,没有限制。
Second = 1000 milliseconds
Minute = 60000 milliseconds
Hour = 3600000 milliseconds
一个答案的优雅解决方案,有点修改。。如果没有更好的功能可用,可以很容易地添加select()用法。只需生成使用select()等的函数。。
代码:
#include <iostream>
/*
Prepare defines for millisecond sleep function that is cross-platform
*/
#ifdef _WIN32
# include <Windows.h>
# define sleep_function_name Sleep
# define sleep_time_multiplier_for_ms 1
#else
# include <unistd.h>
# define sleep_function_name usleep
# define sleep_time_multiplier_for_ms 1000
#endif
/* Cross platform millisecond sleep */
void cross_platform_sleep_ms(unsigned long int time_to_sleep_in_ms)
{
sleep_function_name ( sleep_time_multiplier_for_ms * time_to_sleep_in_ms );
}
推荐文章
- 如何强制从另一个SSH会话分离屏幕?
- 什么是“参数依赖查找”(又名ADL,或“Koenig查找”)?
- 公共朋友交换成员函数
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 如何在Go中使用c++
- 自定义c++分配器的引人注目的例子?
- RAII和c++中的智能指针
- 如何构建和使用谷歌TensorFlow c++ api
- Linux Bash中双&和分号有什么区别?
- 断言是邪恶的吗?
- 下面这些短语在c++中是什么意思:0 -,default-和value-initialization?
- 在SSH会话中查找客户端的IP地址
- 在STL地图中,使用map::insert比[]更好吗?
- C++ Linux的想法?
- 如何为Fedora安装g++ ?