什么是 Block 原语?
在操作系统和并发编程中,block 原语是一种用于使进程或线程进入等待(阻塞)状态的基本操作。 当某个条件未满足时(例如资源不可用),程序可调用 block 原语暂停执行,直到被其他进程或线程通过 wakeup 或 signal 原语唤醒。
典型应用场景
- 生产者-消费者模型中的缓冲区满/空等待
- 互斥锁(Mutex)实现中的线程挂起
- 条件变量(Condition Variable)的底层支持
工作原理简述
调用 block 原语后,当前线程会被移出 CPU 调度队列,并加入一个等待队列。 此时它不消耗 CPU 资源。当相关事件发生(如资源释放),操作系统或运行时会调用 wakeup 原语将其重新加入就绪队列,等待调度执行。
注意事项
Block 原语通常需与原子操作配合使用,以避免竞态条件(race condition)。 在用户级线程库(如早期的 Green Threads)或内核级线程中,其实现方式可能不同。