信号量
现在让我们从卫生间走入厨房,首先我们要明确的一点是:厨房里面可以有一个人,也可以有多个人。那我们怎么控制使用“厨房”这个公共资源的人数(线程数)?一个比较好的方法就是使用信号量。
“信号量”在编程术语中使用单词semaphore,那什么是“信号量”?信号量就好比你家厨房入口架子上摆了三把锅:
如果你的孩子热奶拿走一把,你的老婆热汤拿走一把,你的妈妈做菜拿走一把,你想煮面条就没有锅了。当你看到这种情况,你就不会进入厨房了,也就说厨房按照“锅的数量”作为信号量,只能容纳三个人(线程)。
当你的老婆热完汤之后,把锅重新放回架子上,你就可以去获得一个锅,你就可以进入厨房了。
所以说:当信号量总数为1的时候,也就是你家只有一把锅,此时信号量作用就等同于互斥锁。