C++ | 延时函数

news2024/9/29 15:26:40

C++ | 延时函数

文章目录

  • C++ | 延时函数
    • 函数 sleep/usleep
      • 头文件
    • boost sleep
    • 自定义函数
    • 时间单位转换
    • Reference
      • >>>>> 欢迎关注公众号【三戒纪元】 <<<<<

函数 sleep/usleep

unsigned sleep(unsigned seconds); // 单位是秒 s
sleep(33); // 延时33秒

void usleep(int micro_seconds); // 单位是毫秒 ms
usleep(23); // 延时23毫秒

void sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
std::this_thread::sleep_for(std::chrono::microseconds(msec_to_delay_randy_));

usleep和sleep都是系统调用,usleep更加精确,不能实现实时延迟(系统调用消耗时间)

头文件

// VC中
#include <windows.h> 

// 在gcc编译器中,使用的头文件因gcc版本的不同而不同
#include <unistd.h>  

usleep 源码:

/* Posix declares this handy function obsolete, but I don't think it is in
any danger of going away. It sleeps for the given number of microseconds.
However, using SimTK::sleepInNs() or SimTK::sleepInSec() is safer. */
typedef unsigned int useconds_t;
inline int usleep(useconds_t us) {
    struct timespec req;
    // 求商
    req.tv_sec  = (long) (us / 1000000U);
    // 求尾数,转换为整数
    req.tv_nsec = (long)((us % 1000000U)*1000U);
    int status = nanosleep(&req,0);
    return status ? -1 : 0;
}

sleep_for 源码:

    void
    __sleep_for(chrono::seconds, chrono::nanoseconds);

    /// sleep_for
    template<typename _Rep, typename _Period>
      inline void
      sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
      {
	if (__rtime <= __rtime.zero())
	  return;
	auto __s = chrono::duration_cast<chrono::seconds>(__rtime);
	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__rtime - __s);
#ifdef _GLIBCXX_USE_NANOSLEEP
	__gthread_time_t __ts =
	  {
	    static_cast<std::time_t>(__s.count()),
	    static_cast<long>(__ns.count())
	  };
	while (::nanosleep(&__ts, &__ts) == -1 && errno == EINTR)
	  { }
#else
	__sleep_for(__s, __ns);
#endif
      }

boost sleep

如果代码中引用了boost,可以直接调用sleep函数

#include <boost/thread.hpp>

#if defined BOOST_THREAD_USES_DATETIME
        inline BOOST_SYMBOL_VISIBLE void sleep(::boost::xtime const& abs_time)
        {
            sleep(system_time(abs_time));
        }
#endif

static inline void sleep(const system_time& xt)
{
    this_thread::sleep(xt);
}

自定义函数

#include <time.h>       /* 调用时务必加上该头文件 */
// 自定义的一个延时函数delay()
void delay(int seconds) //  参数必须为整型,表示延时多少秒
{
    clock_t start = clock();
    clock_t lay = (clock_t)seconds * CLOCKS_PER_SEC;
    while ((clock()-start) < lay);
 }

void delay(double seconds) //  参数为双精度浮点型。这个函数是我修改的上面那个函数,重载一下。
 {
    double start = clock();
    double lay = (double)seconds * CLOCKS_PER_SEC;
    while ((clock()-start) < lay);
 }

时间单位转换

1秒(s) = 1000 毫秒(ms) = 1,000,000 微秒(μs) = 1,000,000,000 纳秒(ns) = 1,000,000,000,000 皮秒(ps)

1s = 1000ms
1ms = 1000μs
1μs = 1000ns
1ns = 1000ps

Reference

  • 【c++】6.延时函数
  • Linux的sleep()和usleep()的使用和区别

>>>>> 欢迎关注公众号【三戒纪元】 <<<<<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis和mybatisplus的区别

MyBatis-Plus是对MyBatis框架的封装&#xff0c;MyBatis-Plus具有许多针对CRUD进行的简化方法&#xff0c;通过继承BaseMapper进行实现&#xff0c;简单的说 &#xff0c;如果你使用了MyBatis-Plus&#xff0c;那么项目单表查询都不需要你写sql了&#xff0c;利用自带的方法即可…

NC68 跳台阶

public class Solution {public int jumpFloor(int target) {if(target < 1)return 1;elsereturn jumpFloor(target - 1) jumpFloor(target - 2); } }

日志全链路追踪之MDC

1.引言 Hi&#xff0c;大家好&#xff0c;我是有清 苏格拉底说过&#xff1a;日志打得好&#xff0c;排查没烦恼 我们日常的开发工作中&#xff0c;排查问题去看日志应该是家常便饭的事&#xff0c;日志可以帮助我们清楚的知道当前代码的走向以及链路数据&#xff0c;通常我们现…

JavaScript 使用链接跳转传递数组对象数据类型的方法

文章目录 首先了解一下正常传递基本数据类型JavaScript 跳转页面方法JavaScript 路由传递参数JavaScript 路由接收参数传递对象效果&#xff1a; 在前端有的时候会需要用链接进行传递参数&#xff0c;基本数据类型的传递还是比较简单的&#xff0c;但是如果要传递引用数据类型就…

Python实现PSO粒子群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

WH5097D有源矩阵驱动的Mini LED背光应用方案

Miniled技术为lcd的全面升级版&#xff0c;Miniled的背光层在单位面积内可以容纳更多LED&#xff0c;从而大大提高背光源数量&#xff0c;因此可以进行区域亮度调节的设计&#xff0c;从而在个别区域实现关闭led从而达到完全的黑色&#xff0c;不仅减小了功耗&#xff0c;而且由…

【KingbaseES】如何查看表结构

SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name test_szie;

梅雨季“霉”烦恼,防潮自救指南请收好

魔都的雨下个不停&#xff0c;天气也异常闷热&#xff0c;原来是上海已经入梅了。“雨连连、湿哒哒、闷兮兮”的梅雨季&#xff0c;湿漉漉的空气&#xff0c;感觉身体也跟着“发霉”。不想做梅雨季最“潮”人&#xff0c;赶紧码住这份抗“霉”攻略。 梅雨季最大的特点是空气湿度…

数据库DDL

目录 DDL数据库的操作 SQL表操作&#xff1a; 数据库的数据类型&#xff1a; 数值类型​编辑 字符串类型 日期时间类型 DDL表操作 - 修改​编辑 总结&#xff1a; DDL数据库的操作 演示&#xff1a; SQL表操作&#xff1a; 数据库的数据类型&#xff1a; 数值类型 字符串…

Person相关系数

衡量两个变量线性相关程度。先画散点图看是否为线性相关&#xff0c;相关系数才有用。 总体&#xff1a;要考察对象的全部个体 样本&#xff1a;从总体中所抽取的一部分个体 用样本的统计量估计总体的统计量 总体Person相关系数 协方差Cov(X,Y)反映X、Y的相关性 Person相关系…

zabbix 应用(二)

目录 一&#xff1a;部署 zabbix 代理服务器 1、准备环境 2、 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy 3、 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本 4、 初始化数据库 5、创建数据库 指定字符集&#xff0c;创建 zabbix 数据库用户…

从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

华为云“All in ”大模型:释放人工智能巨能!看低代码开发平台引领未来

前言 截至目前&#xff0c;全球已发布数百个大模型&#xff0c;我国年内已发布80多个大模型&#xff0c;面向消费者端的应用百花齐放。我们认为&#xff0c;大模型在行业里多作贡献&#xff0c;才是正确的道路。 当下发展现状 今年以来&#xff0c;人工智能的发展因ChatGPT进入…

MAC |如何在mac上阅读caj文件?

背景&#xff1a;工作群中老板突然发了一个caj的论文过来&#xff0c;让大家阅读学习。 于是就开启了解决&#xff1a;在mac上阅读caj文件之旅。 首先&#xff0c;尝试了这篇文章的方法&#xff1a; 教你如何在Mac上打开CAJ格式的文件_普通网友的博客-CSDN博客 以失败告终。…

【sql注入-报错注入1】extractvalue()函数 报错注入

目录 extractvalue()报错注入 一、语法介绍&#xff1a; 二、报错原因 网络安全小圈子 &#xff08;***注&#xff1a;注意看版本要求&#xff09; extractvalue()报错注入 一、语法介绍&#xff1a; 版本&#xff1a; MySQL<5.0.x 语法&#xff1a; EXTRACTVALUE(…

地址解析协议 (ARP)

地址解析协议&#xff08;ARP&#xff09;是互联网协议&#xff08;IP&#xff09;套件的关键第 2 层协议&#xff0c;可将 IP 地址转换为媒体访问控制&#xff08;MAC&#xff09;地址&#xff08;IP – MAC&#xff09;&#xff0c;ARP 在实现网络连接方面发挥着不可或缺的作…

赛效:如何一键生成印章

1&#xff1a;在电脑上打开标小智印章生成器&#xff0c;点击输入框&#xff0c;在输入框里输入印章内容。 2&#xff1a;文本内容输入后&#xff0c;点击右侧的“生成按钮”。 3&#xff1a;在生成的印章模板里&#xff0c;挑一个满意的&#xff0c;鼠标放上去就可以看到下载按…

安装Nodejs、NPM、Vue脚手架详细教程

一、安装Nodejs 查看自己电脑是否安装nodejs node --version我这里已经下载过了&#xff0c;没有下载过的会提示该命令不存在 可以到官网下载一下 https://nodejs.org/en/download/ 不要安装在中文路径下 二、安装NPM 如果你安装了nodejs–默认会安装NPM. npm --version…

国内好用的CRM框架推荐和介绍

一、如何选择CRM管理系统的方法 选择适合自己的CRM管理系统是企业客户关系管理的重要决策之一&#xff0c;需要根据自身的需求和实际情况进行选择。下面介绍几个选择比较好的CRM管理系统的方法&#xff1a; 1. 确定功能需求&#xff1a;企业需要根据自身的业务特点和管理需求…

OpenHarmony之小熊派Bearpi-hm_micro_small刷机问题避坑

目录 1.概述2.注意事项3.发现问题4.解决问题 1.概述 最近大家都知道&#xff0c;华为出了一个中国的手机操作系统HarmonyOS,本人很是激动&#xff0c;因为中国终于有了自己的手机操作系统&#xff0c;而且我去了解了下&#xff0c;发现完全不同于Android和IOS操作系统&#xf…