0

0

C++如何让程序暂停或休眠_C++线程休眠与延时函数的使用方法

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-11-11 10:30:03

|

416人浏览过

|

来源于php中文网

原创

使用 std::this_thread::sleep_for 是现代C++推荐的线程休眠方法,1. 它位于 chrono 和 thread 头文件中,支持毫秒、秒、微秒等时间单位;2. 提供纳秒级精度且类型安全,代码可读性强;3. 相比 Windows 的 Sleep() 或 POSIX 的 usleep(),具有跨平台优势;4. 可结合 sleep_until 实现定时唤醒;5. 常用于控制循环频率、模拟延迟等场景,但需注意阻塞特性及系统调度对精度的影响。

c++如何让程序暂停或休眠_c++线程休眠与延时函数的使用方法

在C++中,让程序暂停或线程休眠是常见的需求,比如用于控制循环频率、模拟延迟、等待资源等。标准库提供了多种方式实现线程休眠与延时,跨平台和可移植性是选择函数时需要考虑的重点。

使用 std::this_thread::sleep_for 延时指定时间

这是现代C++(C++11起)推荐的方式,位于 chronothread 头文件中。可以精确控制线程休眠时长。

基本语法如下:

#include
#include

// 休眠500毫秒
std::this_thread::sleep_for(std::chrono::milliseconds(500));

// 也可以使用其他时间单位
std::this_thread::sleep_for(std::chrono::seconds(1)); // 1秒
std::this_thread::sleep_for(std::chrono::microseconds(1000)); // 1毫秒

这种方式支持纳秒级精度,且类型安全,代码可读性强。

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

使用 std::this_thread::sleep_until 暂停到指定时间点

如果你希望线程暂停到某个具体的时间点,而不是持续一段时间,可以使用 sleep_until

auto now = std::chrono::steady_clock::now();
auto target = now + std::chrono::milliseconds(800);
std::this_thread::sleep_until(target);

常用于定时任务或周期性操作中,确保每次执行间隔一致。

魔术橡皮擦
魔术橡皮擦

智能擦除、填补背景内容

下载

跨平台兼容的延时方法建议

虽然Windows有 Sleep()(注意大写S),POSIX系统有 usleep()nanosleep(),但这些都不是跨平台的。建议统一使用C++标准库函数以避免平台差异问题。

例如,替代旧式写法:

// 不推荐:仅适用于Windows
Sleep(1000); // 休眠1秒(单位毫秒)

// 不推荐:POSIX专用,可能已废弃
usleep(500000); // 500毫秒(单位微秒)

应改用标准C++方式,提升代码可移植性。

常见使用场景与注意事项

在多线程程序中使用休眠时需注意以下几点:

  • sleep_for 是阻塞当前线程,不会影响其他线程运行
  • 时间精度受操作系统调度影响,不能保证绝对精确
  • 避免在主线程长时间休眠导致界面无响应(如GUI程序)
  • 调试时可用短延时配合输出观察执行流程

例如,在循环中控制执行频率:

while (running) {
    update();
    std::this_thread::sleep_for(std::chrono::milliseconds(16)); // 约60FPS
}

基本上就这些。使用 std::this_thread::sleep_for 是最简洁、安全且跨平台的C++休眠方法,配合 chrono 时间单位能清晰表达意图,推荐在所有现代C++项目中采用。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

81

2023.09.25

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

473

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

131

2025.12.24

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

131

2025.12.24

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

54

2025.12.01

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

524

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1059

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

754

2023.08.01

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 5.8万人学习

C 教程
C 教程

共75课时 | 3.8万人学习

C++教程
C++教程

共115课时 | 10.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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