首页 > 后端开发 > C++ > 正文

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

穿越時空
发布: 2025-12-15 06:25:17
原创
602人浏览过
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(推荐)

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

示例(延时2.5秒):

#include <iostream>
#include <thread>
#include <chrono>
<p>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)

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

#include <iostream>
#include <windows.h>
<p>int main() {
std::cout << "开始\n";
Sleep(1000); // 暂停1000毫秒(1秒)
std::cout << "1秒后\n";
}
登录后复制

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

Waifulabs
Waifulabs

一键生成动漫二次元头像和插图

Waifulabs 317
查看详情 Waifulabs

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

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

#include <iostream>
#include <ctime>
#include <unistd.h> // usleep
// 或 #include <time.h> // nanosleep
<p>int main() {
std::cout << "Linux延时示例\n";
usleep(200000); // 200,000 微秒 = 200 毫秒(不推荐)</p><pre class="brush:php;toolbar:false;">// 更好的写法(nanosleep):
struct timespec ts = {0, 200000000}; // 0秒 + 200,000,000纳秒 = 200ms
nanosleep(&ts, nullptr);
登录后复制

}

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

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

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

#ifdef _WIN32
    #include <windows.h>
    inline void my_sleep(int ms) { Sleep(ms); }
#else
    #include <unistd.h>
    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或延时?(代码示例)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号