经典并发问题: 理发店的故事

鸟窝 at 
马上就二月二了,理发店就要忙活起来了,托尼、凯文、艾伦等老师的理发剪磨刀霍霍,把椅子擦亮,准备各位顾客的到来。Sleeping barber problem 是一个经典的 goroutine 交互和并发控制的问题,可以很好的用来演示多写多读的并发问题(multiple writers multiple readers)。理发店问题最早是由计算机科学先驱 Edsger Dijkstra 在 1965 指出的,在 Silberschatz 和 Galvin 的 Operating Systems Concepts 一书中有此问题的变种。这个问题是这样子的。有这么一个理发店,有一位理发师和几个让顾客……