计算机是怎么处理冲突的(少儿编程课程)
1586 2022-07-11 10:30
现实生活中我们经常碰到一些冲突,往往是资源紧张的情况下,多个需求方进行请求。
举个例子:老师课上分配了一项任务给全班同学,做一个艺术品且上交的时候只能写班级不能写姓名,同学们差不多一节课都完成了任务。老师要求把作品交到办公室。很有可能大家都堵在了老师的办公室门口。如果同学们都把作品扔在老师办公桌上,那么老师不知道这些作品都是谁做的。但是如果每个同学都等老师打完分再走。那么就会影响下一节课的学习。怎么办?对了,我们可以每一节课的课间都去试一试。总有可能交到老师的手上。
再极端一些,有一个班的同学在教学楼阳面,有一个班的同学在教学楼阴面,天热,阳面的一个班同学全都中暑了,需要每个人吃一个冰淇淋,但是只有一个老师可以送快递,阴面班级的同学们不能乱跑,只能在自己的座位上制作冰淇淋。制作完成之后可以交到讲台上,讲台上有老师才能正确交付,讲台上没有老师(老师去送冰淇淋了),就需要重新制作冰淇淋。因为冰淇淋没有及时接收就会融化,融化后的冰淇淋起不到治疗作用。
那么类似的时间在高速发达的网络上经常出现、比如抢票、比如预约、比如购物。总会有同一时间很多人要竞争很少的商品。那么一个不友好的系统就会因为大家都伸手把窗口堵死而一张票也出不来。甚至挤爆、崩溃、瘫痪。一个特别友好的系统,往往又需要高昂的宽带费用、高昂的服务器费用、高昂的场地、人工费用等等。那么一个合理的系统,通过算法,可以平和、延缓这些紧张的竞争。让洪水猛兽变得缓和甚至温顺。那么如何设计一个合理的算法来达成这样的目的呢?
在计算机程序设计中,有一种CAS(自旋锁)的设计,可以解决上面的 问题。它使用一种叫做“比较并交换”的算法来解决处理冲突。怎么实现呢?
首先每个获取任务的人,都会从指挥控制中心获得一个初始号码self.num,然后自己独立做任务,在做完任务之后将自己得到的这个号码加1(self.num += 1),然后走到指挥控制中心(以下简称中心),去和中心的号码center.num进行比对,如果中心当前的号码加1等于自己(center.num + 1 = self.num),那么就顺利交接了任务,并且将中心当前的号码修改成自己手里的号码。
《与孩子一起学编程》课程用四大算法思想、矩阵思维引导孩子如何观察问题、处理问题。用科学的打字方法、高维的数学认知,有逻辑有铺垫的语文表达,串联起基础学科的知识点。同时使用必备的英语软件操作环境固化基础英语单词,让孩子在日常操作中轻易读懂英文常用说明书。有兴趣的家长可以同孩子一起学习哟~
附CAS源代码:
全部评论