Semaphore(信号量)是计算机科学中用于控制多个进程或线程对共享资源进行访问的一种并发同步机制。它由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger W. Dijkstra)于1965年提出。 通俗地讲,信号量就像是一个停车场的入口显示牌。 停车场有10个车位(初始信号量为10)。 每进去一辆车,显示牌上的可用车位就减1(信号量减1)。 当可用车位为0时,道闸就不会打开,后续的车辆必须在门外排队等待(线程阻塞)。 当里面有一辆车开出来,可用车位加1(信号量加1),道闸抬起,排在最前面的一辆等待的车可以进入。 --- 一、 信号量的核心机制 在底层实现上,信号量本质上是一个非负整数计数器,并配有两个原子操作(在操作系统教材中通常称为 P 操作和 V 操作): 1. Acquire(获取 / P操作 / Wait): 线程尝试获取资源。 如果信号量的值 > 0,则将其减 1,线程继续执行。 如果信号量的值 == 0,则线程被阻塞(挂起),直到信号量的值大于0。 2. Release(释放 / V操作 / Signal): 线程释放资源。 将信号量的值加 1。 如果此时有其他线...