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
英文地址,請注明出處:http://en.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;我們需要向模型提供表名、表結構和…