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

C++ 线程睡眠(阻塞)

概括

C++ 11中,使用<this_thread>库和 <chrono> 库实现线程睡眠(暂停)。主要使用std::this_thread::sleep_for()std::this_thread::sleep_until()两个函数。
关于<chrono>库请阅读链接

使用示例

使用 std::this_thread::sleep_for

#include <iostream>  
#include <thread>  
#include <chrono>  int main() {  std::cout << "线程开始执行...\n";  // 暂停当前线程2秒  std::this_thread::sleep_for(std::chrono::seconds(2));  std::cout << "线程恢复执行...\n";  return 0;  
}

使用`std::this_thread::sleep_until

std::this_thread::sleep_until函数使线程暂停,直到指定的时间点。

#include <iostream>  
#include <thread>  
#include <chrono>  int main() {  std::cout << "线程开始执行...\n";  // 获取当前时间并加上2秒  auto next_time = std::chrono::system_clock::now() + std::chrono::seconds(2);  // 暂停当前线程直到next_time  std::this_thread::sleep_until(next_time);  std::cout << "线程恢复执行...\n";  return 0;  
}

区别

  • sleep_for是睡眠一个时间段
  • sleep_until是睡眠到某一个时间点
  • 两者会使当前线程暂停执行,但不会释放它所占用的资源(如CPU时间片)。
  • 两者与我们熟知的sleep()有一定区别,同时sleep()在不同平台也有不同之处。在Windows的<windows.h>库中,Sleep()接受一个毫秒数作为参数,并导致调用线程暂停执行指定的时间。它是线程级别的,仅影响调用它的线程。在Linux的<unistd.h>中,sleep()函数接受一个无符号整数参数,表示程序要暂停执行的秒数。它是进程级别的,并且会暂停整个进程的执行,而不仅仅是调用它的线程。

http://www.mrgr.cn/news/35396.html

相关文章:

  • 游戏化在电子课程中的作用:提高参与度和学习成果
  • Ubuntu一些文件及问题研究分析
  • 解决:sudo apt install catkin的报错问题。
  • canvas练习画太阳花
  • 常见统计量与其抽样分布
  • js中的cloneDeep是什么?
  • 常见分布在matlab的仿真实现方法
  • 复制他人 CSDN 文章到自己的博客
  • 第三讲 part 2:LINK3D原理 - 代码 - 自定义内容
  • 论文阅读【时间序列】ModerTCN (ICLR2024)
  • YOLOv8——测量高速公路上汽车的速度
  • consul注册中心与容器自动发现实战
  • 报表做着太费劲?为你介绍四款好用的免费报表工具
  • 2k1000LA 调试HDMI
  • 深度学习|误差逆传播:梯度速解
  • 力扣算法题总结
  • CVPR最牛图像评价算法!
  • 基于jsonpath的JSON数据查找
  • 【深度】边缘计算神器之数据网关
  • 如何选择游戏高防服务器,有什么需要注意的点?