c++--线程休眠/sleep

线程休眠

<unistd.h>--sleep()

<thread>--std::this_thread::sleep_for()

ros--rclcpp::sleep_for()

以上的三个sleep也就是休眠会占用CPU吗

简单直接的回答是:不会。一个正确使用、正在休眠的线程不会占用CPU资源。

核心原理

当你调用像 std::this_thread::sleep_for() 这样的函数时,当前线程会从 运行状态(Running) 转变为 休眠状态(Sleeping / Blocked)

  1. 状态改变:操作系统内核的调度器会将该线程标记为“正在休眠”,并将其从 可运行队列(Ready Queue) 中移除。

  2. 调度决策:CPU调度器从此不再考虑这个线程,因为它不可运行。调度器会转而选择其他处于“可运行”状态的线程来执行。

  3. 唤醒机制:操作系统内核维护着一个计时器,当指定的休眠时间到期后,内核会将线程重新放回“可运行队列”,等待被调度器选中并在CPU上执行。

上面的休眠接口,主要用于的确需要让线程休眠等待指定时间的场景。

线程让出时间片

<thread>--std::this_thread::yield()

std::this_thread::yield() 的作用是主动让出当前线程剩余的 CPU 时间片,提示操作系统调度器立刻重新进行调度。

可以把它理解成一种礼貌的让步:“我现在没什么特别紧急的事要做,不如你先去执行其他可能更重要的线程吧”。

再次被调度的时间

注意,我们一般使用这个接口的格式:

      while (条件满足) {std::this_thread::yield();  // Don't busy wait}

使用这个接口,只是让当前线程主动放弃时间片,但是它并不会向操作系统注册while中等待的条件,注意区分这点,不要理解错误了。

而什么时候这个线程会被再次调度执行:

这个不确定,完全有操作系统自己决定。

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

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

相关文章

人工智能基础概念

The brain happens to be a meat machine. —— Marvin Lee Minsky 目录 人类智能 人工智能 三个阶段 三大学派 四个要素 关系辨析 维度分类 发展简史 技术方向 应用领域 产业图谱 发展趋势 人类智能 人工智能的目的是通过探索智慧的实质&#xff0c;扩展人类智能…

企业数字资产管理怎么转型更高效?一文打通策略与实践

核心要点 问题&#xff1a; 传统的内容管理方式效率低、协作难、版本混乱&#xff0c;企业转型 DAM 系统面临选型难和落地难两大挑战。 答案&#xff1a; 采用阶段性转型策略&#xff0c;结合智能化工具和标准化流程&#xff0c;能帮助企业构建可扩展、易协作、强治理的内容资…

python pyqt5开发DoIP上位机【源码】

目录 文章合集 文章合集 python pyqt5开发DoIP上位机【介绍】 python pyqt5开发DoIP上位机【代码里发送常用uds命令是怎么实现的?】 python pyqt5开发DoIP上位机【代码里是怎么获取诊断回复的?】 python pyqt5开发DoIP上位机【诊断回复的函数都是怎么调用的?】 python …

IIC (I2C)通信

一、IIC的特点I2C&#xff08;Inter IC Bus&#xff09;又成为&#xff08;爱方C I2C&#xff09;是由Philips公司开发的一种通用数据总线两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09;同步&#xff0c;半双工带数据…

【图像处理 - 基础知识】ISP(Image Signal Processor)处理

文章目录1. 图像传感背景2. 图像数据格式2.1. 【RAW】Bayer滤色阵列&#xff08;Bayer Filter Array&#xff09;2.2. 【RGB】2.3. 【YUV】3. ISP&#xff08;Image Signal Processor&#xff09;3.1. ISP定义3.2. 分类概括1 RAW 域&#xff08;Raw Domain&#xff09;2 RGB 域…

PostgreSQL 数据库灾备要点与举例说明**

PostgreSQL 数据库灾备要点与举例说明 数据库灾备(Disaster Recovery, DR)是确保业务连续性的核心环节,其目标是在主生产环境遭遇计划外中断(如硬件故障、自然灾害、人为错误、数据损坏)时,能快速恢复数据和服务。PostgreSQL 因其强大和开源特性,提供了多种高效的灾备方…

【GaussDB】在逻辑复制中剔除指定用户的事务

【GaussDB】在逻辑复制中剔除指定用户的事务 1. 需求背景 在逻辑复制中&#xff0c;期望对源端指定用户的所有操作不复制到目标端。然而WAL日志中没有用户信息可用于过滤&#xff0c;因此考虑结合审计日志来实现这一需求。 2. 解决方案 2.1 配置审计日志 首先需要开启事务…

C/C++---预定义常量

在C/C开发中&#xff0c;预定义常量是编译器与标准库提供的“隐形工具集”&#xff0c;无需开发者显式定义&#xff0c;却在跨平台兼容、调试定位、数值计算安全等场景中发挥核心作用。这些常量涵盖编译环境标识、语言标准判断、代码定位信息、数值边界限制等多个维度&#xff…

嵌入式学习笔记--LINUX系统编程--DAY03进程控制

1.进程概述进程和程序的区别程序&#xff1a;程序是存储在存储介质上的一个可执行文件---静态的进程&#xff1a;进程是程序的执行实例。可以说进程就是正在执行的程序。程序是一些指令的集合&#xff0c;而进程是程序的执行过程&#xff0c;这个过程的状态是变化的&#xff0c…

【90页PPT】新能源汽车数字化转型SAP解决方案(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2501_92808859/91777751 资料解读&#xff1a;《新能源汽车数字化转型SAP解决方案》 ​​详细资料请看本解读文章的最后内容​​ 在全球汽车产业加速向电…

LSM6DS3姿态芯片和LIS2MD磁力计芯片数据读取(stm32)

上代码main.c 代码示例#include "lsm6ds3.h" #include "lis2md.h"int16_t Acc[3] {0}, GYO[3] {0},Mag[3] {0};int main(void) {I2C_GPIO_Config(); //配置IIC使用端口Delayms(500); //延时Lsm6ds3_Init( ); …

数据传输安全-IKE工作过程

在前面的课程中&#xff0c;你已经掌握了&#xff1a;IPSec的目标&#xff1a;提供机密性、完整性、身份认证、防重放。IPSec的执行者&#xff1a;AH和ESP协议。IPSec的规则手册&#xff1a;SA&#xff08;安全关联&#xff09;&#xff0c;包含了所有保护参数&#xff08;算法…

翻译-同位协同克里金算法

同点协同克里金法 副标题: 地统计学课程 主要内容: 同点协同克里金法 摘要 同点协同克里金法是一种多元地统计学技术,用于借助次要变量(协变量)来估算主要变量。本课程介绍了同点协同克里金法,并将其与简单克里金法和简单协同克里金法进行了比较。通过一个假设的案例…

国家统计局数据分析01——机器学习

我们前面爬取过国家统计局数据爬取——机器学习-CSDN博客的数据,我们接下来就对爬取的数据进行分析。 这是一个完整的数据分析代码,主要用于加载、清洗和探索政府统计数据。让我为你详细解释每个部分: 1. 导入必要的库 import pandas as pd # 数据处理和分析的核心库 imp…

【杂谈】-混沌理论能否赋予机器差异化思考能力?

混沌理论能否赋予机器差异化思考能力&#xff1f; 文章目录混沌理论能否赋予机器差异化思考能力&#xff1f;1、AI与结构化思维的本质特征2、人类思维的独特优势3、混沌算法的创新实践4、混沌算法的作用机理5、混沌算法的应用实例5.1 音乐创作革新5.2 图像生成突破5.3 科学发现…

jQuery.print插件:网页内容打印与导出指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;在网页开发中&#xff0c;为了实现内容的打印或导出&#xff0c;可以利用jQuery.print插件&#xff0c;该插件提供了一个简易的解决方案&#xff0c;尤其适用于表格数据。本指南详细介绍了如何使用jQuery.print…

w嵌入式分享合集125

自己的原文哦~ https://blog.51cto.com/whaosoft/14165530 一、常用电路基础公式 1.欧姆定律计算 计算电阻电路中电流、电压、电阻和功率之间的关系。 欧姆定律解释了电压、电流和电阻之间的关系&#xff0c;即通过导体两点间的电流与这两点间的电势差成正比。说…

Docker 核心技术:Union File System

大家好&#xff0c;我是费益洲。UnionFS 作为 Docker 的技术核心之一&#xff0c;实现了 Docker 镜像的分层轻量化构建、容器资源的隔离复用等目的。本文将从核心原理、主流技术实现简单介绍 UnionFS。 核心原理 Linux 的联合文件系统&#xff08;Union File System&#xff0c…

MongoDB 文档模型设计:JSON 结构的灵活性与陷阱

MongoDB 文档模型设计&#xff1a;JSON 结构的灵活性与陷阱第一章&#xff1a;MongoDB 文档模型基础与核心特性1.1 MongoDB 文档模型的哲学基础1.2 文档模型的优势分析1.3 与关系型数据库的深度对比第二章&#xff1a;文档设计模式与最佳实践2.1 嵌入式模式&#xff08;Embeddi…

基于SQL大型数据库的智能问答系统优化

一、食用指南 基于SQL数据库的智能问答系统设计与实现介绍了在数据库中创建表格数据问答系统的基本方法&#xff0c;我们可以向该系统提出关于数据库数据的问题&#xff0c;最终获得自然语言答案。 为了针对数据库编写有效的查询&#xff0c;我们需要向模型提供表名、表结构和…