BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / joke / #443926同步于 2010/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Joke机器人发帖

zz水协议

Pheobe
2010/4/8镜像同步0 回复
发信人: YamaP (YamaP), 信区: Joke 标 题: 叫水协议。。。 发信站: 水木社区 (Wed Apr 7 19:37:09 2010), 站内 那天看老公邮箱里有一封信,标题是叫水协议,好奇,遂点进进入,然后HLL的被雷到了。。。 信是他们实验室一个人给大家的群发,信内容如下: 组里面已经有饮水机了,有两个水桶,希望大家看见一个桶喝完就叫水,这样可以保证水不 断。叫水电话@@@@,水卡卡号AAAA,每次让他送一桶”矿泉水“就可以 了,水票在饮水机下面的隔间里 为了保证大家不重复叫水,HW和我拍定了一个协议,就是水喝 完了之后如果空桶是放在饮水机上的,就表示还没叫水,空桶是放在饮水机旁边的地上的,就表示已经叫水还没有送到。 希望大家可以看到一个桶空了之后可以举手之劳,去叫个水,争取不要出现桶放在饮水机上面的情况,:) 以下是实验室中的众人回复信,看完了,真的要Orz一下了 ------------------------------------ 这个协议有bug呀。如果实验室里非贵组的人发现水没了,没叫水就把空桶拿下来直接换了有水的 桶,咱就都不知道了。。。 所以我觉得最自然的情况(饮水机上的桶是空的,或者空桶放在旁边的地上)都应该表 示没叫过水,而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是,拿一张水票放在空桶上表示叫过水(这 样送水的来了也省的人给他找水票了)。 ------------------------------------- 协议1.0还有一个问题是,如果叫水的时候不把另一桶水换上,会导致不断换同一桶水,而另一桶水百年不用。 ------------------------------------- 这个问题我解释一下,我怀疑你可能不完全了解这个场景。我们现在有一个饮水机,两个水桶。初始时一个水桶 在饮水机上,里面有水,另外一个在地上, 是满的,这个状态记为状态*。目前的策略是当一桶喝完时换另一桶,同时叫一桶水。这样可以保证实验室始终有水可喝(这里 假设送水延迟远远小于喝一桶水的时间)。当下一桶水到达时,送水的师傅会把原来换下的那个空桶带走, 回到状态*。如此反复。 ---------------------------------------- 关键是把叫水和换筒做成原子操作。 ------------------------------------------ 万一有大队人马同时干光了两桶水,组里有大号水箱没?…… ------------------------------------------ 所以我觉得最自然的情况(饮水机上 的桶是空的,或者空桶放在旁边的地上)都应该表示没叫过水,而 用一种特殊的标记表示叫过水了。比如我们宿舍的方法 是,拿一张水票放在空桶上表示叫过水(这样送水的来了也省的人给 他找水票了)。 --------------------------------------------- 的确如此,上面建议的这个patch抗干扰性要比v1.0好, 建议打上这个patch。不过也有问题:如果水票被风吹掉了…… ---------------------------------------------- 如果这样的话,协议1.0的bug很容易修啊。把叫水和没叫水的 两个状态换一下就可以了(假设空桶放在饮水机上比较不自然,叫过水的就把空桶放在饮水机 上,没叫过就放在地上)。这样不明就里的人换水会 选择自然把桶放在地上,就表示水没叫过。 ----------------------------------------------- 叫水成功 有空桶 ---------------> 把水票放空桶之上 | | 未叫水 | 或叫水失败 | 空桶,无水票 这样的协议 才是fail-safe的,即不懂协议的人也能按协议正常执行。。。 ------------------------------------------------- 赞fail-safe的协议!话说咱们有过v2.0吗? 以上 看完了,我崩溃了,不能写个牌子放在那里,正面已叫水,反面未叫水,挂在饮水机上,谁打过电话,翻动一下不就完了。。。 娃们,你们花点时间干别的吧。。。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。