叫水协议。。。 - 【April's Digg】

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

※ 来源:·水木社区 ·[FROM: 166.111.68.*]

欢迎您发表评论:

郑重声明:资讯 【叫水协议。。。 - 【April's Digg】】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——