当前位置:  开发笔记 > 编程语言 > 正文

向非技术受众解释竞争条件

如何解决《向非技术受众解释竞争条件》经验,为你挑选了2个好方法。

最近,我发现自己不得不写一些关于正在开发的应用程序中的竞争条件的问题(不是我).这可能会引起非技术性的利益相关者的注意,并且我没有直接的沟通渠道,因此我的解释需要采用书面形式.

我已经尝试过这篇文章了.我尽可能地掩盖技术细节,举例说明应用程序中将如何发生竞争条件,并描述其影响.我觉得我做得很好,但它远非完美.

问题是,尽管我试图保护读者不受计算机科学的影响,但我仍然发现在不失去正确性和实质性的情况下,很难消除诸如"执行线索"和"互斥"之类的短语.风险是,由于挥手太多,这些担忧可能会被视为一个虚构的笨蛋.

不管怎样,我对你的问题是这样的: 将如何解释的竞争条件,以一个非技术人员? 你敢解释CPU调度吗?你会援引餐饮哲学家吗?

你不必在我的情况的限制下工作(但如果你这样做会很有帮助).



1> blizpasta..:

X公司在银行有1000美元.X支付2000美元的租金,并收到10,000美元的服务,用于向Y公司提供的服务.但是,由于竞争条件,X的赤字为1,000美元,现在申请破产.=(

您可能想要解释银行如何以这种方式处理公司X的账户:银行职员A获得1,000美元的当前价值并为其增加10,000美元.银行职员B的现值为1,000美元,并从中减去2,000美元.银行职员A将价值更新为11,000美元.银行职员B将价值更新为 - $ 1,000.



2> jalf..:

我认为银行交易可能是一个很好的例子,因为很容易看出错误的结果是坏的,并且因为竞争条件很容易在这样的环境中创建.

我的帐户上有500美元.有人在我提取50美元的同时向我汇款200美元.

现在,如果银行没有正确处理竞争条件,他们将执行以下操作(假设交易是手动处理的,当然)职员A会看到我的余额增加200美元的请求,并注意我的余额目前为500美元.职员B会看到从我的余额中扣除50美元的请求,并注意我的余额目前是500美元(职员A尚未转账).

职员A完成文书工作并将我的账户余额设置为700美元(500 +他应该添加的200).然后,一分钟后(因为店员B只需要拿一杯咖啡),店员B完成了另一笔交易,并将我的余额设定为450美元(我检查时的500,减去他要减去的50) ).

由于竞争条件,我的余额现在是450美元,应该是650美元.结果取决于两次交易的不同部分的执行顺序.

这是对竞争条件如何糟糕的一般描述.现在说代替职员,我们让应用程序同时处理两个单独的任务(这是你的'执行线程'),就像上面一样,他们都读取一个值,修改他们读取的值,然后写回来了.如果按照上面显示的顺序发生,则可能会丢失其中一个修改.这应该与您的应用中的特定问题相关联.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有