当前位置: 首页 > news >正文

C++:详解C++11 线程休眠函数

休眠函数

  • 简介
  • 1: 让线程休眠一段时间
    • 1.1:std::chrono 的时钟 clock

简介

C++11 之前并未提供专门的休眠函数,C语言的 sleep、usleep函数其实是系统提供的函数,不同的系统函数的功能还要些差异。

  • 在Windows系统中,sleep的参数是毫秒
  • sleep(2*1000); // sleep for 2 seconds
  • 在类Unix系统中,sleep()函数的单位是秒。

sleep(2); // sleep for 2 seconds

  • 但是从C++11起,C++标准库提供了专门的线程休眠函数,使得你的代码可以独立于不同的平台。

std::this_thread::sleep_for
std::this_thread::sleep_untill

1: 让线程休眠一段时间

std::this_thread::sleep_for : 用于Block 当前线程一段时间。

函数原型:
template<class Rep, class Period>
void sleep_for(const std::chrono::duration<Rep,Period>& sleep_duration);
比如:想要一个线程休眠 100ms
std::this_thread::sleep_for(std::chrono::millseconds(100));

#include <iostream>
#include <chrono>
#include<thread>int main(){std::cout << "start wait......"<< std::endl;/**在C++11 中 chrono中有三种时钟:system_clock, steady_clock 和 high_resolution_clocksystem_clock : 是不稳定的,因为时钟是可调的。它可以输出当前时间距离:1970年1月1日00:00的毫秒数它一般用于需要得到 :绝对时点的场景。steady_clock:一般用在需要得到时间间隔的场景。high_resolution_clock:介于上面两者之间,时间精度比steady_clock()更精确*/auto start = std::chrono::high_resolution_clock::now();std::this_thread::sleep_for(std::chrono::milliseconds(2000));auto end = std::chrono::high_resolution_clock::now();std::chrono::duration<double,std::milli> elapsed = end-start;std::cout<< "waited: "<< elapsed.count()<< " ms"<< std::endl;}
打印结果 
tart wait......
waited: 2000.06 ms

1.1:std::chrono 的时钟 clock

std::chrono是C++11引入的日期时间处理库,其中包含了3种时钟: system_clock,steady_clock ,high_resolution_clock 。如果需要使用高精度的时间,很自然就会想到使用 high_resolution_clock 。

1. system_clock: 用在需要得到绝对时间点的场景。

void test_system_clock(){auto curTime = std::chrono::system_clock::now();std::time_t tt = std::chrono::system_clock::to_time_t(curTime);std::cout<< tt << " seconds from 1970-01-01 00:00:00 UTC"<< std::endl;
}
int main(){test_system_clock();
}// 打印结果:1677597162 seconds from 1970-01-01 00:00:00 UTC
  1. steady_clock: 用在需要得到时间间隔,并且这个时间间隔不会因为修改系统时间而受到影响的场景
void test_steady_clock(){auto curTime = std::chrono::steady_clock::now();// do somethingstd::this_thread::sleep_for(std::chrono::milliseconds(3000));auto curTime2 = std::chrono::steady_clock::now();std::chrono::duration<double,std::milli> spendTime = (curTime2-curTime);std::cout<< "耗时:"<< spendTime.count()<< "秒"<< std::endl;
}int main(){test_steady_clock();
}// 打印:耗时:3000.07秒

相关文章:

C++:详解C++11 线程休眠函数

休眠函数简介1: 让线程休眠一段时间1.1&#xff1a;std::chrono 的时钟 clock简介 C11 之前并未提供专门的休眠函数&#xff0c;C语言的 sleep、usleep函数其实是系统提供的函数&#xff0c;不同的系统函数的功能还要些差异。 在Windows系统中&#xff0c;sleep的参数是毫秒 …...

TryHackMe-The Great Escape(Docker)

The Great Escape 我们的开发人员创建了一个很棒的新网站。你能冲出沙盒吗&#xff1f; 端口扫描 循例 nmap Web信息收集 robots.txt: /exif-util是文件上传点&#xff0c;但是绕过之后貌似没啥用 在robots.txt当中披露了可能存在.bak.txt&#xff0c;现在我们已知的文件就是…...

这么强才给我28k,我头都不回,转身拿下40k~

时间真的过得很快&#xff0c;眨眼就从校园刚出来的帅气小伙变成了油腻大叔&#xff0c;给各位刚入道的测试朋友一点小建议&#xff0c;希望你们直通罗马吧&#xff01; 如何选择自己合适的方向 关于选择测试管理&#xff1a; 第一&#xff0c;你一定不会是一个喜欢技术&…...

【Python学习笔记】第二十一节 Python Lambda 函数

Python 提供了非常多的库和内置函数。有不同的方法可以执行相同的任务&#xff0c;而在 Python 中&#xff0c;有个万能之王函数&#xff1a;lambda 函数&#xff0c;它以不同的方式在任何地方使用。一、Lambda 函数简介在 Python 中&#xff0c;函数可以接受一个或多个位置参数…...

Nginx学习整理

Nginx学习第一章 Nginx概述1.1、Nginx概述1.2、Nginx官网1.3、Nginx用处第二章 Nginx单实例安装2.1、环境说明2.2、安装依赖2.3、Nginx下载2.4、Nginx解压2.5、Nginx安装2.6、Nginx命令2.7、开放防火墙2.8、启动后效果第三章 Nginx正向代理、反向代理3.1、概述3.2、反向代理配置…...

阿里面试之Hr面,这个套路把我坑惨了......

作为技术类的测试工程师面试&#xff0c;往往要经过多次面试才能拿到心仪的offer&#xff0c;这里面有技术一面、二面…&#xff0c;甚至总监面等&#xff0c;还有一个必不可少的就是HR面&#xff0c;一般HR会出现在你面试的最前面和最后面&#xff0c;前面是了解你的基本情况&…...

域基础和基本环境搭建

1.1 名词解释 域和工作组的区别&#xff1a; 工作组中所有的计算机都是对等的&#xff0c;也就是没有服务器和客户机的之分&#xff0c;所以工作组并不存在真正的集中管理作用&#xff1b;域是一个有安全边界的计算机集合&#xff0c;安全边界指的是一个域中的用户无法访问到另…...

Java Map集合体系(HashMap、LinkedHashMap、TreeMap、集合嵌套)

目录Map集合体系一、Map集合的概述二、Map集合体系特点三、Map集合常用API四、Map集合的遍历4.1 Map集合的遍历方式一&#xff1a;键找值4.2 Map集合的遍历方式二&#xff1a;键值对4.3 Map集合的遍历方式三&#xff1a;lambda表达式五、Map集合案例-统计投票人数六、Map集合的…...

使用邮箱验证实现登录功能(发送邮件,redis)

目录 概述 前端搭建 后端搭建 生成验证码-存入redis&#xff08;主要过程代码&#xff09; 发送邮件&#xff08;主要过程代码&#xff09; 登录验证-取出redis中数据进行验证&#xff08;主要代码&#xff09; 完整代码一-LoginController 完整代码二-LoginService 完…...

【Linux】网卡的7种bond模式

网卡的7种bond模式 一、bond模式 Mode0(balance-rr) 表示负载分担round-robin&#xff0c;和交换机的聚合强制不协商的方式配合 Mode1(active-backup) 表示主备模式&#xff0c;只有一块网卡是active,另外一块是备的standby&#xff0c;这时如果交换机配的是捆绑&#xff0c…...

AQS抽象队列同步器

aqs 抽象队列同步器&#xff0c;内部存储了一个valitail修饰的status 和内部类node &#xff0c;来实现对共享变量并发同步队列机制,以reentrantLock为例&#xff0c;lock底层实际上调用的是sync的lock&#xff0c;会调用cas对status的状态进行修改&#xff0c;来确定是否获得锁…...

springBoot对REST支持源码解析

一、在配置类中&#xff1a; AutoConfiguration(after { DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class }) ConditionalOnWebApplication(type Type.SERVLET) ConditionalOnClass({ Servlet.class, D…...

6 集成学习及Python实现

1 主要思想 集成学习: 三个臭裨将, 顶个诸葛亮 Bagging: 数据随机重抽样, 并行构建分类器, 投票&#xff1b;Boosting: 关注被错分的样本, 串行构建分类器, 加权投票。 2 理论 AdaBoost (Adaptive Boosting)示意图1 错误率: εEN\varepsilon \frac{E}{N}εNE​ 其中NNN为…...

如何编程实现从多数据库操作数据

对于数据量很大的复杂系统&#xff0c;有时候会采用分库或者分表的减轻单台数据库服务器压力&#xff0c;截止目前有一些工具直接支持读写分离等&#xff0c;例如ShardingSphere&#xff0c;如果不采用工具框架&#xff0c;从编码出发&#xff0c;如何实现从多个数据库读写数据…...

LeetCode 147. 对链表进行插入排序 | C/C++版

LeetCode 147. 对链表进行插入排序 | C语言版LeetCode 147. 对链表进行插入排序题目描述解题思路思路一&#xff1a;使用栈代码实现运行结果参考文章&#xff1a;思路二&#xff1a;减少遍历节点数代码实现运行结果参考文章&#xff1a;[]()LeetCode 147. 对链表进行插入排序 …...

【QT进阶】第五章 QT绘图之自定义控件--仪表盘绘制

❤️作者主页:凉开水白菜 ❤️作者简介:共同学习,互相监督,热于分享,多加讨论,一起进步! ❤️专栏目录:【零基础学QT】文章导航篇 ❤️专栏资料:https://pan.baidu.com/s/192A28BTIYFHmixRcQwmaHw 提取码:qtqt ❤️点赞 👍 收藏 ⭐再看,养成习惯 订阅的粉丝可通过…...

Java代码弱点与修复之——URL manipulation(URL操纵)

弱点描述 “URL manipulation” 是指攻击者利用应用程序中的 URL 参数来执行恶意操作的一种攻击技术。 在 URL manipulation 攻击中,攻击者会修改应用程序中的 URL 参数,以便执行不当操作,如访问未授权的页面、修改他人的数据、绕过访问控制等。攻击者通常会使用手动修改 …...

Sharding Sphere学习

一、基本概念 1.什么是Sharding Sphere 2.分库分表3.分库分表的方式 4.分库分表应用和问题 5.功能 5.1数据分片 —核心概念 —使用限制 5.2分布式事务 —核心概念 —使用限制 5.3读写分离 —核心概念 —使用限制 5.4高可用 —核心概念 —使用限制 5.5数据库网关 —核心概念…...

粗心小编被云拯救,那云上数据谁来拯救?

开工第三天      小编已忙的焦头烂额      不是因为工作积压      而是因为自己的疏忽      也许是没有进入工作状态,一大早先经历了自行车钥匙丢失,手机遗落在家,好不容易坐到工位上才发现,备份数据的U盘忘带了。    不过,好在提前将工作文件上传到了云端…...

[git可视化软件]gitkraken平替:GitAhead

日期2023-02-28 gitkraken6.5.1已经不能登陆使用了!! 6.5.1免费版已经无法使用!!! 现在是2023-02-28 这款工具已经废除了6.5.1版本的使用功能了,我直接卡在登陆界面进不去项目了. 要想继续管理私有项目,只能升级最新版的软件,并且开通会员.会员费用高的一批,一年要59.4美元.约…...

DCT-Net人像卡通化真实案例:企业年会电子抽奖卡通头像墙

DCT-Net人像卡通化真实案例&#xff1a;企业年会电子抽奖卡通头像墙 年底了&#xff0c;公司年会又要来了。行政部的同事找到我&#xff0c;说今年想搞点新花样&#xff0c;电子抽奖环节能不能不用大家千篇一律的证件照&#xff0c;换成好玩的卡通头像墙&#xff1f;这样抽奖的…...

新手也能看懂!5分钟搞懂图像频谱图:用MATLAB的fft2和fftshift分析图片细节

图像频谱图解析&#xff1a;用MATLAB透视照片的隐藏密码 想象一下&#xff0c;如果每张照片都能像X光片一样被"透视"&#xff0c;让我们看到它内部隐藏的结构特征&#xff0c;那会怎样&#xff1f;这就是图像频谱图的魔力所在。不同于我们日常看到的像素排列&#xf…...

Claude Code性能优化实战:如何让AI编程助手在大型项目中飞起来

Claude Code性能优化实战&#xff1a;如何让AI编程助手在大型项目中飞起来 大型代码库就像一座迷宫&#xff0c;而Claude Code则是你手中的智能地图。但当项目规模膨胀到数十万行代码时&#xff0c;这张地图的加载速度可能会让你抓狂。本文将分享一系列经过实战验证的性能优化技…...

OpenAPI状态机建模指南:用有限状态机设计RESTful API的终极方法 [特殊字符]

OpenAPI状态机建模指南&#xff1a;用有限状态机设计RESTful API的终极方法 &#x1f680; 【免费下载链接】OpenAPI-Specification The OpenAPI Specification Repository 项目地址: https://gitcode.com/gh_mirrors/op/OpenAPI-Specification OpenAPI Specification 是…...

从CMIP6到SCI论文:气候降尺度全流程实战(含偏差校正与未来预估)-GCM数据降尺度、泰勒图评估及XGBoost机器学习建模指南

做水文气象、气候学、地理遥感、生态环境等领域的科研人&#xff0c;是不是都逃不过这些噩梦&#xff1a;尺度鸿沟难跨越&#xff1a;GCM 粗网格&#xff08;>100km&#xff09;和流域 / 城市精细尺度&#xff08;<10km&#xff09;不匹配&#xff0c;动力降尺度成本太高…...

从idea ai插件到在线原型:用快马平台快速构建你的智能代码生成器

最近在开发中频繁使用IDEA的AI插件辅助编码&#xff0c;发现这类工具能大幅减少重复劳动。但插件功能往往局限于当前IDE环境&#xff0c;于是萌生了一个想法&#xff1a;能否把这种智能生成能力搬到线上&#xff0c;做成一个轻量级的Web工具&#xff1f;经过在InsCode(快马)平台…...

TensorFlow实战:用CIFAR-10数据集训练你的第一个图像分类模型(附完整代码)

TensorFlow图像分类实战&#xff1a;从零构建CIFAR-10卷积神经网络的完整指南 当第一次接触图像分类任务时&#xff0c;许多开发者会被复杂的网络结构和数据处理流程所困扰。本文将带你用TensorFlow构建一个能识别10类常见物体的卷积神经网络&#xff0c;从数据加载到模型评估&…...

Graphormer部署教程:/etc/supervisor/conf.d/graphormer.conf配置解析

Graphormer部署教程&#xff1a;/etc/supervisor/conf.d/graphormer.conf配置解析 1. 项目介绍 Graphormer是一种基于纯Transformer架构的图神经网络模型&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等…...

AI 卖课博主年赚 120 万?原本我想打假,算完账我破防了

AI 卖课博主年赚 120 万&#xff1f;原本我想打假&#xff0c;算完账我破防了 大家好&#xff0c;我是马彪。 昨天晚上刷到一个博主&#xff0c;说自己一年赚了120万&#xff0c;其中90万来自卖课&#xff0c;才5万粉丝。我想这不扯淡呢吗&#xff0c;肯定又是吹牛想割韭菜。 现…...

SpringBoot+Hadoop实战:手把手教你搭建民宿数据可视化平台(附完整源码)

SpringBootHadoop实战&#xff1a;构建高可用民宿数据可视化平台 1. 项目背景与技术选型 民宿行业近年来呈现爆发式增长&#xff0c;随之而来的是海量房源信息、用户评价和交易数据的积累。传统的关系型数据库在处理这类数据时面临存储瓶颈和计算性能不足的问题。我们选择Spr…...