“养鱼”问题

来源:互联网 发布:js检测类型 编辑:程序博客网 时间:2024/04/28 05:53

首先了解金鱼有一个“特点”:它会一直吃,一直吃,直到撑死为止。

这吃货真的会连命都不要硬是要吃死自己么?这个暂且不论其真实性,这样认为就好了。另外,爱国下,金鱼起源于中国哦。

 

假设李雷和韩梅梅两个人合住一套公寓,共同养了一条金鱼。金鱼一天喂也只能喂一次,不然鱼就撑死了;当然如果谁也不喂,鱼就饿死了。所以李雷和韩梅梅约定

1. 每天喂鱼一次,且仅一次

2. 如果李雷喂了,韩梅梅就不喂了,反之亦然

3. 如果今天李雷没有喂,韩梅梅今天就必须喂,反之依然

 

场景1

起初李雷和韩梅梅都还不沟通。每个人觉得需要喂鱼时,查看一下鱼的状态,感觉鱼还没进过食,则喂鱼。就这样,金鱼经常就死了。

症结

感觉常常出现问题。往往鱼还没吃食,他们觉得鱼吃了,然后鱼就饿死了;玩玩鱼吃了,他们觉得鱼没吃,然后鱼就撑死了。

改进

李雷和韩梅梅平常多观察,通过查看鱼的外形就能很准确的判断鱼是否喂过。

 

场景2

岁月悠悠,鱼儿悠悠。因为他们能很准确的判断鱼是否喂过。直到有一天,他们发现鱼还是撑死了。怎么回事呢?

李雷判断完鱼没喂后,然后去了趟厕所,花了5分钟。此间韩梅梅判断鱼没喂,给喂了鱼。李雷回来后,然后喂鱼,鱼不幸胀死了。

症结

存在代码竞争,两个人不能同时进入临界区

改进

任何时刻只能有一个人在临界区里,即互斥。当李雷判断鱼有没有喂后,去厕所的时候,不允许韩梅梅喂鱼。那韩梅梅怎么知道李雷是不是在厕所里呢?

 

场景3

韩梅梅和李雷沟通是最直接的方法,另外就是:留纸条

原创粉丝点击