前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云计算,迷你版线程同步

云计算,迷你版线程同步

作者头像
企鹅号小编
发布2018-01-15 16:55:34
7270
发布2018-01-15 16:55:34
举报
文章被收录于专栏:云计算云计算

昨天发了那个吹牛的文章,一不注意把今天推送文章的机会用掉了,所以我现在(PM 8:50)虽然已准备好,但也发不出来,抱歉,说好的今天发线程同步的内容只等到明天凌晨了.

今天的文章里没有故事,但应该也足够通俗易懂.

正文开始

这个世界显然不仅存在竞争,也无处不存在着合作,计算机的世界里也是这样.还是举一个简单不过的例子:

一个线程负责计算(比如1+1),另一个线程负责结果输出(显示2),其实这是经典的生产者-消费者模型(专业叫法是不是感觉高大上?),这里不懂不要紧,以后我们在数据结构与算法,网络通讯等章节中还会讲,这真是很常见的应用,作为职业的班子必然需要牢牢牢牢牢牢掌握.

这两个线程是合作的关系,一个负责计算一个负责输出结果.这两个线程之间又存在着严谨的秩序关系或者叫依赖关系,负责输出结果的线程必须等待计算线程作完成计算工作,才能够输出有意义的结果,否则就可能输出错误的结果(为什么说可能呢?知道的筒子留言我,答对了有惊喜哦).在经典教材中,将这种依赖关系称之为线程同步

现在知道了线程需要同步也就是合作才能正确高效的完成特定任务,那么如何来实现呢?这个简单,用两个线程都知道的标记M来标识计算工作是否完成,在计算线程未完成计算工作时M的值为0,完成计算工作后,将M的值修改为1,那负责输出结果的线程就定期去看看M是否为1,如果不是1,就休息一会儿,一旦发现为1,立即去做输出结果的工作.

真的很简单?

仔细想想看,这种方法有没有什么问题?当然有.

定期查看的时间间隔是多久?1秒还1分钟,多少合适呢?这取决于具体业务的精度要求.现代操作系统当然,都完全考虑了这种需要,提供了一种叫做信号量的东西,专门完成这个工作.由于是操作系统内置的机制,因此效率也比咱们自己使用一个标记要高,而且及时性也非常好.

但万事无绝对,究竟是使用哪一种办法取决实际的业务,如此对及时性要求比较高或者说越及时越好,就最好使用信号量.反之,如果延迟一个一秒两秒无所谓,甚至延迟十秒二十秒都无所谓,那么显然就采取定期查看标记值的方法就足够了.

讲了简单的线程同步后,我们说一说高大上的云计算,好厉害啊,云计算.但说穿了,就不会显得那么神.也许,你听有一个词儿叫分布式计算,十几年前就有了,如今只是换了一个名词而已.

额,可这与线程同步有什么关系?

云计算一般用于完成一个大型的复杂的任务,而这个复杂的任务可以将其分成若干个子任务(有一种叫作MapReduce的工具专门用来分解任务,参考吴军书籍《数学之美》),然后把这些子任务放到互联网上的一些计算中心去完成,从而完成以往需要超级计算机才能够完成的任务.但一些关键任务的计算就必须等某些子任务完成后才可以继续,这可以叫作任务同步,与线程同步的本质是不是一回事儿?

当然是.

(完)

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档