C++如何实现sleep或延时?(代码示例)

C++11及以上应优先使用std::this_thread::sleep_for实现跨平台延时,需包含和头文件;旧平台可选Sleep()(Windows)或nanosleep()(Linux),但缺乏可移植性。

c++如何实现sleep或延时?(代码示例)

在C++中实现sleep或延时,主要取决于你使用的标准版本和目标平台。C++11起,标准库提供了跨平台的 std::this_thread::sleep_forstd::this_thread::sleep_until,推荐优先使用;旧代码或特殊场景下可能用到平台API(如Windows的 Sleep()或Linux的usleep()/nanosleep()),但不具可移植性。

✅ C++11及以上:标准线程sleep(推荐)

需包含头文件 ,利用 std::chrono 的时间单位指定延时长度。

示例(延时2.5秒):

#include #include #include 

int main() {std::cout << "程序开始n";std::this_thread::sleep_for(std::chrono::milliseconds(2500));// 或写成:sleep_for(2s + 500ms);std::cout << "2.5秒后继续n";return 0;}

常用时间单位:

立即学习“C++免费学习笔记(深入)”;

std::chrono::seconds(3) → 3秒std::chrono::milliseconds(500) → 500毫秒std::chrono::microseconds(1000) → 1000微秒(即1毫秒)std::chrono::nanoseconds(1000000) → 1毫秒

⚠️ Windows平台:Sleep()(仅限Win32)

需包含 ,参数单位为毫秒,且会将当前线程挂起(注意大小写:Sleep 首字母大写)。

#include #include 

int main() {std::cout << "开始n";Sleep(1000); // 暂停1000毫秒(1秒)std::cout << "1秒后n";}

⚠️ 注意:Sleep(0) 表示主动让出当前时间片,不真正“休眠”,常用于轻量级调度提示。

⚠️ Linux/Unix:usleep() 或 nanosleep()(已不推荐)

usleep() 接收微秒数,但已被POSIX标记为废弃;nanosleep() 更精确、可中断,推荐替代。

#include #include #include  // usleep// 或 #include 

}

? 提示:这些C风格函数不具备C++类型安全,也无异常机制,跨平台项目应避免直接使用。

? 小技巧:封装一个跨平台sleep函数

若需兼容老标准或统一接口,可简单封装:

#ifdef _WIN32    #include     inline void my_sleep(int ms) { Sleep(ms); }#else    #include     inline void my_sleep(int ms) { usleep(ms * 1000); }#endif

但更稳妥的做法仍是坚持用 std::this_thread::sleep_for —— 只要编译器支持C++11(GCC 4.8+、Clang 3.1+、MSVC 2012+均支持)。

基本上就这些。标准库方案简洁、安全、可读性强,无需宏判断或条件编译,是现代C++延时的首选方式。

以上就是C++如何实现sleep或延时?(代码示例)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 12:03:43
下一篇 2025年12月19日 12:04:01

相关推荐

发表回复

登录后才能评论
关注微信