C++笔记之条件变量wait()的入参个数,及从忙等待、自旋锁、轮询、到阻塞休眠

📅 2026/7/27 6:31:56 👁️ 阅读次数 📝 编程学习
C++笔记之条件变量wait()的入参个数,及从忙等待、自旋锁、轮询、到阻塞休眠

C++笔记之条件变量wait()的入参个数,及从忙等待、自旋锁、轮询、到阻塞休眠

code review!

文章目录

  • C++笔记之条件变量wait()的入参个数,及从忙等待、自旋锁、轮询、到阻塞休眠
  • 1. std::condition_variable::wait() 有几个入参?入参含义是?
    • 1.1 版本一:1 个参数
    • 1.2 版本二:2 个参数(更常用、更安全)
    • 1.3 小结对比
  • 2. 如果没有返回就相当于阻塞住了?
    • 2.1 阻塞的具体过程
    • 2.2 一句话总结
  • 3. 自旋锁、忙等待、轮询、阻塞、条件等待的辨析
    • 3.1 核心区分维度
    • 3.2 各概念详解
      • 3.2.1 忙等待/自旋检查(Busy-Waiting)—— 不休眠,连续检查
      • 3.2.2 自旋锁(Spinlock)—— 忙等待的具体应用
      • 3.2.3 轮询(Polling)—— 不休眠(或短暂休眠),间隔检查
      • 3.2.4 阻塞(Blocking)—— 休眠,被动等待通知
      • 3.2.5 条件变量 `wait()` —— 阻塞的具体实现
    • 3.3 完整对比表
    • 3.4 用一条"频谱"来理解它们的关系
    • 3.5 一句话总结

condition_variable在计算机科学(特别是多线程编程)中,中文通常翻译为:
  • 条件变量

在操作系统和 C++(如std::condition_variable)、Java、POSIX 线程(pthread)等编程语言或库的中文文档中,均统一使用条件变量这一称呼。它常与互斥锁(Mutex)配合使用,用于线程间的同步与等待通知机制。

1. std::condition_variable::wait() 有几个入参?入参含义是?

std::condition_variable::wait()两种重载版本,参数个数分别是 1 个和 2 个。

1.1 版本一:1 个参数

voidwait(std::unique_lock<std