c++中的时间处理(3)与sleep相关的时间函数

从Apollo自动驾驶到你的小项目:聊聊C++中sleep、usleep、delay和clock()的那些事儿 本文深入探讨了C++中延时与计时函数的选择与应用,从工业级项目如百度Apollo的精确控制到小型项目的灵活实现。详细解析了sleep、usleep、delay和clock()等函数的优缺点,并提供了跨平台开发的最佳实践和性能优化技巧,帮助开发者根据项目需求合理选择时间控制方案。 阅读详情

1、Sleep()函数

头文件:
Windows下为:windows.h
Linux下为:unistd.h

注意:
(1)Sleep是区分大小写的,有的编译器是大写,有的是小写。
(2)Sleep括号里的时间,在windows下是已毫秒为单位,而Linux是以秒为单位

2、sleep_for()函数

C++11中的chrono也可以用来实现休眠控制:

this_thread::sleep_for(seconds(2));

睡眠的时间除了seconds还可以是:

std::chrono::nanoseconds
std::chrono::microseconds
std::chrono::milliseconds
std::chrono::seconds
std::chrono::minutes
std::chrono::hours

例子:

#include <chrono>
#include <thread>
#include <iomanip>

int main() {
    std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
    time_t tc = std::chrono::system_clock::to_time_t(now);
    std::cout << "now date time:" << std::put_time(localtime(&tc), "%Y-%m-%d %H:%M:%S") << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
    std::chrono::duration<double> dur = end - now;
    std::chrono::duration<double, std::micro> durmicro = end - now;
    std::chrono::duration<double, std::milli> durmilli = end - now;
    std::cout << "second:" << dur.count() << ";micro:" << durmicro.count() << ";milli:" << durmilli.count() << std::endl;
    std::cout << "duration_cast:" << std::chrono::duration_cast<std::chrono::seconds>(end - now).count() << std::endl;

    return 0;
}

执行结果:

 

参考:

(1)【C/C++】Sleep函数的用法

别再傻傻用sleep()了!C++里实现精准延时和性能统计的几种姿势(附clock()避坑指南) 本文深入探讨了C++中实现精准延时和性能统计的现代最佳实践,对比了传统`sleep()`和`clock()`的局限性,并详细介绍了C++11 `<chrono>`库的高精度时间控制方法。通过实战案例展示了如何构建自适应帧率控制系统和跨平台时间处理方案,帮助开发者避开常见陷阱,提升实时系统性能。 阅读详情

相关推荐

C++控制台电子时钟实战:从时间处理到界面绘制的完整项目指南

在C++编程学习中,时间处理与用户界面交互是核心基础技能。通过标准库中的<chrono>和<ctime>模块,开发者可以精确获取和操作系统时间,理解时间戳、持续时间和时间点的概念。这些技术不仅为程序提供了时间基准,更是实现定时任务、动画效果和实时系统的关键。在控制台应用中,结合I/O操作与循环控制,能够构建出动态更新的交互界面。本项目以电子数字时钟为具体场景,系统展示了如何将时间处理、字符图形绘制和事件循环相结合,实现一个在命令行中实时显示并支持用户交互的完整应用。通过点阵数字渲染和精确计时循环等实践,深入

weixin_34109408的博客 439

C/C++中的Sleep()函数

Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。 一般需要头文件windows.h。 注意"Sleep"首字母要大写,小括号内参数单位是毫秒。 下面这个示例程序可以帮助你了解一下这个函数: #include<stdio.h> #include<windows.h> int main() { for(int i=0;i<50;i++) { printf("Hello world!\n");

m0_z的博客 8647

C++时间处理:从std::chrono基础到C++20日历时区实战

时间处理是编程中的基础且关键的技术概念,尤其在系统编程、性能分析和分布式系统中至关重要。其核心原理在于将时间抽象为可测量、可计算和可转换的标准化表示,以解决传统C语言时间函数存在的类型不安全、精度有限和线程不安全等问题。现代C++通过std::chrono库实现了这一技术价值,它提供了一套类型安全、可扩展的时间处理工具集,将时间分解为时长(Duration)、时钟(Clock)和时间点(Time Point)三个核心构件。在工程实践中,这直接应用于高精度性能分析、超时控制、日志时间戳生成以及跨时区日程管理等

dianwei5413的博客 319

C++ -----sleep函数

C++中的sleep函数用于暂停程序的执行,让程序休眠一段时间。这段代码会在输出"开始休眠"之后,暂停程序执行5秒钟,然后输出"休眠结束"。

c5c5c5c5c5的博客 7841

C++游戏开发:基于std::chrono实现精准帧率控制与动画计时

在实时应用和游戏开发中,时间管理是确保程序稳定运行的核心基础。其原理在于通过高精度计时器对时间间隔进行精确测量,从而实现对程序执行节奏的精准控制。这项技术的核心价值在于保障了动画的流畅性、物理模拟的稳定性以及游戏逻辑的确定性,是构建健壮交互体验的基石。其应用场景广泛覆盖了游戏引擎开发、实时模拟系统和图形应用程序。本文聚焦于C++标准库中的std::chrono模块,深入探讨如何利用其提供的类型安全时钟与时间段抽象,来构建游戏引擎中至关重要的帧率控制与动画计时两大模块,解决游戏循环中时间步长管理与动画插值的关

weixin_33858485的博客 401

现代C++日期时间库:从类型安全到全球时区处理

在软件开发中,日期时间处理是基础且关键的环节,尤其在涉及跨时区业务、定时任务和数据分析时。传统C/C++的时间函数如time_t和struct tm存在类型不安全、线程不安全及难以处理时区等痛点。现代C++标准库通过<chrono>提供了类型安全的时长(duration)和时间点(time_point)抽象,利用编译期检查杜绝单位混淆错误。其核心价值在于提升代码的健壮性和可维护性,广泛应用于金融交易、全球调度和日志系统等场景。C++20进一步引入了日历日期类型和完整的时区支持,基于IANA数据库,能优雅处理

mxdxm8899的专栏 453

跟我学C++中级篇——sleep和wait的不同

其实在实际应用中,二者的应用大多是泾渭分明的。但真正的细节上的区别,还是需要认真的掌握。不然在开发具体的工程时,可能会一时疏忽导致不可预测的问题和错误。还是那句话,细节决定成败,但不能拘泥于细节。这个度,就需要开发者自己不断养成自己的判断。

fpcc的专栏 1953

Linux与Windows时间戳获取全解析:从系统调用到Qt跨平台实践

时间戳作为记录事件发生时刻的数字标识,在软件开发中扮演着核心角色。其原理基于从特定纪元(如Unix纪元)开始计算的时间单位累加,为日志记录、性能分析和数据同步提供统一的时间基准。在技术实现上,区分墙上时钟(如CLOCK_REALTIME)与单调时钟(如CLOCK_MONOTONIC)至关重要,前者反映日历时间但可能被调整,后者严格递增,专为耗时测量设计,这是确保时序逻辑正确的关键。对于跨平台开发,Linux通过clock_gettime系统调用提供灵活的高精度时间获取,而Windows则依赖QueryPer

weixin_33862993的博客 358

ROS 2 Humble 时间处理避坑指南:系统时间、仿真时间与WallTime的3个关键差异

本文深入解析ROS 2 Humble版本中系统时间、仿真时间与WallTime的3个关键差异,帮助开发者避免时间处理中的常见陷阱。通过C++和Python代码示例,详细介绍了时间源切换、格式转换及高精度测量等实践技巧,提升机器人开发中的时间管理能力。

weixin_30616969的博客 412

CLion实战:基于CMake构建跨平台C++日志库

CMake作为C/C++跨平台构建的事实标准,通过抽象项目描述与本地构建工具,实现了“一次编写,到处构建”的核心价值。其原理在于将平台差异封装在生成器(如Makefiles、Visual Studio解决方案)中,开发者只需维护统一的CMakeLists.txt。这种模式极大提升了工程实践效率,尤其在开发需要部署于Windows、Linux、macOS等多环境的应用程序时,例如日志系统、网络服务等基础组件。CLion作为深度集成CMake的智能IDE,将代码分析、重构、调试与跨平台构建无缝衔接,提供了统一的

weixin_33845881的博客 489

C++笔记之各种sleep方法总结

C++笔记之sleep总结 —— 2023年4月9日 小问 上海 code review文章目录C++笔记之sleep总结1.std::this\_thread::sleep\_for()附:std::this\_thread::sleep\_for(std::chrono::duration)2.std::this\_thread::sleep\_until()附:std::this\_thread::sleep\_until(std::chrono::time\_point)3.std::chrono:

小勇博客 1万+

C++并发编程中的时间处理:chrono库核心原理与实战应用

在并发编程中,时间处理是确保程序正确性和性能的关键基础。时间间隔(Duration)和时间点(Time_point)作为核心概念,通过类型安全的方式在编译期防止单位混淆和溢出错误。其技术价值在于为线程调度、超时控制和性能测量提供了统一、可移植的抽象。在应用场景上,无论是实现带超时的锁获取、条件变量等待,还是构建定时任务调度器,都离不开对时间的精确管理。本文聚焦于C++11引入的chrono库,深入解析其Duration、Time_point和Clock三大组件,并结合std::condition_varia

weixin_30740581的博客 402

C++ Sleep 函数

C++ Sleep 函数。 Sleep 函数的 S是大写!!!! 今天,我们来讲一下C++中的 Sleep 函数,它的作用是让程序暂停一会。

小天狼星_布莱克 的博客 3万+

从Apollo自动驾驶到你的小项目:聊聊C++中‘等待’的艺术(sleep, usleep实战与chrono库新写法)

本文探讨了C++中时间控制的现代演进与实践,从传统的sleep()、usleep()到C++11 chrono库的高精度时间管理。通过工业级应用(如Apollo自动驾驶)与日常开发的对比,揭示了精确时间控制在多线程、跨平台场景中的关键作用,并提供了现代C++时间操作的实用技巧与最佳实践。

weixin_30666401的博客 376

c++中实现sleep的三种方式(跨平台)

1、stl方式 //by 鸟哥 用stl实现sleep //有疑问请留言或加群 1032082534 #include <iostream> #include <chrono> #include <thread> using namespace std; int main(){ cout<<"sleep前"<<endl; ...

鸟哥的博客 1万+

Unsloth Desktop 本地大模型微调量化实战指南

大语言模型的本地化定制正在成为开发者与内容创作者的重要需求,而微调与量化则是其中最关键的两项技术。LoRA 与 QLoRA 通过仅训练少量低秩矩阵,大幅降低显存占用和训练成本,让消费级 GPU 也能完成模型适配;GGUF 格式则打通了训练与推理的边界,使微调后的模型可直接接入 Ollama、llama.cpp 等主流推理引擎。本文以 Unsloth Desktop 为切入对象,从其底层加速原理出发,梳理了环境准备、模型加载、对话测试、量化导出、微调验证及 API 批量调用的完整链路,并针对显存优化、端口冲突

weixin_29055137的博客 397

机器人SLAM开发中C++时间库chrono与ctime的实战应用与避坑指南

在机器人SLAM(即时定位与地图构建)和嵌入式系统开发中,时间戳的精确处理是保障系统稳定性和数据融合精度的核心基础。其原理在于通过高精度、单调递增的时钟为异步传感器数据(如激光雷达点云、相机图像、IMU数据流)提供统一的时间基准,实现精准的**时间同步**。这项技术的核心价值在于,它直接决定了多传感器融合、状态估计和地图构建的准确性,是算法从理论走向工程实践的关键桥梁。应用场景广泛覆盖自动驾驶、移动机器人导航和增强现实等领域,要求开发者必须精通底层时间工具。本文聚焦于C++标准库中的`chrono`与`ct

weixin_30263073的博客 338

MySQL服务启动失败?手把手教你排查NET HELPMSG 3534错误(附完整修复流程)

本文针对Windows平台上MySQL服务启动失败并提示NET HELPMSG 3534错误的常见问题,提供了系统性的排查与修复指南。文章深入剖析了错误本质,并手把手教你通过查看MySQL错误日志、检查并初始化数据目录、修正Windows服务配置、排查my.ini配置文件陷阱等核心步骤,彻底解决这一棘手问题,帮助开发者和运维人员快速恢复数据库服务。

wdx0123456的博客 894

C++11新特性_第三章 时间与多线程编程

chrono命名空间下,直接提供了 hours,milliseconds等,这个实现原理也是基于duration类实现的。// 1h// 1// 1// 3毫秒// 3ms// 3// 3// 3000// 6.6s// ks = 3// 时间间隔为:1/30秒,共3.5 * 1/30 秒// 3.5。

weixin_43916755的博客 914

ARM双核锁步DCLS Lockstep技术研究(FPGA实现)

基于《Applying Dual-Core Lockstep in Embedded Processors to Mitigate Radiation-induced Soft Errors》文章总结 RISC-V双核锁步DCLS Lockstep技术参考之前文章: RISC-V双核锁步DCLS Lockstep技术总结_远古架构师alanwu的博客-优快云博客https://blog.csdn.net/heyuming20062007/article/details/123329537ARM+RIS

heyuming20062007的博客 8726

微信小程序转发功能异常报错 由于小程序违规分享功能暂时无法使用的解决办法

小程序右上角转发功能被封,不代表你违规了,而可能是你没认证、没备案!很多功能都是“先合规、后开发”,踩坑就晚了,别像我一样绕了三圈才发现问题。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2603

C/C++程序执行时间精准测量:从原理到实践的性能剖析指南

在算法优化和性能分析中,程序执行时间的精准测量是评估计算效率的核心基础。其原理在于区分墙上时钟时间与CPU时间,前者反映程序整体运行时长,后者专注实际计算耗时。这一技术价值在于为算法选型、瓶颈定位提供量化依据,尤其在排序算法、图像处理等计算密集型场景中至关重要。通过掌握高精度计时方法,开发者能够有效评估Sobel算法、卡尔曼滤波等复杂算法的实际性能,避免理论复杂度与实际执行效率的脱节。本文系统解析C/C++中多种计时方案的原理差异与适用场景,涵盖从标准库函数到操作系统高精度接口的完整方案选型,并针对编译器优

cneo2012的博客 437

论文阅读:Universal and Transferable Adversarial Attacks on Aligned Language Models. LLM Attacks

因为“即开即用”的大型语言模型能够生成大量令人反感的内容,近期的工作集中在对这些模型进行对齐,以防止不受欢迎的生成。尽管在规避这些措施方面取得了一些成功——即所谓的针对大型语言模型(LLMs)的“越狱”——这些攻击需要大量的人类智慧,并且在实践中很脆弱。自动对抗性提示生成的尝试也取得了有限的成功。在本文中,我们提出了一种简单有效的攻击方法,可以导致对齐的语言模型生成令人反感的行为。

CSPhD-winston的博客 1414
上一篇: c++中的时间处理(2)time.h库及几个time相关的函数
下一篇: 掌握std::move和std::forward
老蔡编程
博客等级 码龄23年 48粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值