Concurrency 向非技术观众解释比赛情况

Concurrency 向非技术观众解释比赛情况,concurrency,communication,Concurrency,Communication,最近,我发现自己不得不在一个正在开发的应用程序(不是我自己)中写下一些关于种族条件的担忧。这可能会引起非技术性利益相关者的注意,我与他们没有直接的沟通渠道,因此我需要以书面形式进行解释 我已经试过写这篇文章了。我尽可能地掩饰技术细节,举例说明竞态条件在应用程序中是如何发生的,并描述其影响。我觉得我做得很好,但还远远不够完美 问题是,尽管我试图让读者远离计算机科学,但我仍然发现,在不失去正确性和实质内容的情况下,很难消除诸如“执行线程”和“互斥”之类的短语。风险在于,如果挥手太多,这些担忧可能会被

最近,我发现自己不得不在一个正在开发的应用程序(不是我自己)中写下一些关于种族条件的担忧。这可能会引起非技术性利益相关者的注意,我与他们没有直接的沟通渠道,因此我需要以书面形式进行解释

我已经试过写这篇文章了。我尽可能地掩饰技术细节,举例说明竞态条件在应用程序中是如何发生的,并描述其影响。我觉得我做得很好,但还远远不够完美

问题是,尽管我试图让读者远离计算机科学,但我仍然发现,在不失去正确性和实质内容的情况下,很难消除诸如“执行线程”和“互斥”之类的短语。风险在于,如果挥手太多,这些担忧可能会被视为虚构的妖怪而被忽视

无论如何,我想问你的问题是:你如何向非技术观众解释比赛条件?你敢解释CPU调度吗?你能调用这个命令吗


你不必在我的情况限制下工作(但如果你这样做了,那将是非常有帮助的)。

我会选择餐饮哲学家式的方法,但根据我的听众,我会尝试将其与我的听众的背景进行类比。你是在和业务主管谈话吗?然后将其类比为分配一个会议室或一辆公司汽车,或预订一个酒店房间或其他任何东西。你在和普通人说话吗?那么餐饮哲学家的例子就很好了,或者你可以想出一个类似的情况,包括照顾农场动物或坐在椅子上或其他什么


无论你是劫持餐饮哲学家的榜样,还是自己制作,一定要用一个比喻。

X公司的银行里有1000美元。X向Y公司支付了2000美元的租金,并收到了10000美元的服务费。然而,由于种族条件,X公司亏损1000美元,目前正在申请破产=(


你可能想解释银行是如何用这种方式处理X公司的账户的:银行职员A将当前值1000美元加上10000美元。银行职员B将当前值1000美元减去2000美元。银行职员A将当前值更新为11000美元。银行职员B将值更新为-1000美元。

简单的显而易见的情况如何s

比赛条件实际上是两个人之间的比赛

一家公司正在对一个项目进行投标。两名独立处理投标的员工向客户提交投标书,但其中一名员工的信息已过时。两名员工都不知道另一名员工正在提交投标书,因此,根据谁更快,第一个投标书可能会被速度较慢的员工替换。这将导致e由于投标可能随着时间的推移而发生变化,造成混乱


两名员工之间需要进行沟通,才能共同工作或阻止其中一人。

如果你给非技术性受众写信,你需要简化你的解释,并将其与他们能够理解的内容联系起来。论文中的一个解释类似于向没有经验的pr教授并行计算Grammers()用钢笔游戏来解释:

我们将要玩一个叫做 钢笔游戏。规则很简单:我是 准备拿支笔,然后 然后我会说“一,二,三,开始” 当我说“走”的时候,把笔从我手里拿开 手,谁拿到笔谁就赢。 准备好了吗?一,二,三,开始


然后你会问这个游戏的结果是否可以提前预测。如果不能预测,我们能保证一个正确的结果吗?这应该会让你意识到,如果同时写入同一块内存,可能会得到错误的结果。

我本来打算推荐餐饮哲学家,但我发现你有alr艾迪找到了一个。那么,作为替代方案,用交通堵塞作为类比怎么样

想象一下,正常的车辆沿着一个城市街区旁边的四条街道行驶(北街、南街、东街和西街).当路上只有一两辆车时,一切都会顺利进行。当交通稳定时,有些车会停下来等待其他车通过,但这是一个可以处理的问题。一辆车停下来等待另一辆车通过,然后继续快乐地行驶

现在,想象一下在同一地点的高峰时间交通。假设一辆车在西街往南行驶,无法通过我们城市街区西北角的十字路口。这辆车现在阻塞了北大街上所有西行交叉路口。西行车很快就会试图通过北街东角十字路口被堵住了,阻塞了东街所有北行的交通。当这种情况使得四个十字路口的所有车辆都无法移动时,每个人都在等待前面的车辆向前移动,但如果不向后拉车,就无法缓解交通堵塞


与计算的比较应该是直截了当的。汽车是线程或进程,街道和大道是处理器、缓冲区或核心。阻塞的概念可以用交通信号灯或停车标志来描述,整个事情开始变得直观,甚至对非程序员来说。

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

我账户上有500美元。 有人在我提取50美元的同时将200美元转账给我

现在,如果银行没有正确处理竞争条件,他们将执行以下操作(当然,假设交易是手动处理的) 职员A将看到向我的余额中添加200美元的请求,
player 1 grabs a red block
player 1 places red block         - player 2 grabs an orange block
player 1 grabs an orange block    - player 2 places an orange block
player 1 places an orange block