云计算,迷你版线程同步

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

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

正文开始

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

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

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

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

真的很简单?

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

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

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

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

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

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

当然是.

(完)

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

jAVA发展历程

1991 绿色计划 (Green Project) 1991年1月 一个名为“Green Project”的项目启动。该项旨在为家用电器提供支持,使这些电器智能...

422110
来自专栏CSDN技术头条

编码过程中需尽量避免的 7 条捷径

1. 复制代码 “我认为最有价值的规则是避免重复。有且仅有一次是极限编程里的说法。- Martin Fowler 这很容易成为头号规则。如果你想要你的代码坚如磐...

22760
来自专栏大数据挖掘DT机器学习

利用pthon爬虫和数据分析在618抢购Macbook pro

好久没玩点有意思的了,这次借618这个购物节,自己也要搞台mbp,顺便搞一波大新闻. 对某宝的其中四家店,再加上某东一家店,对比同一款机型,对价格进行监控...

64570
来自专栏IT大咖说

IT大咖撩段子

01 ? 02 大一刚学C语言,第二次上机课,当我发现我照着书抄写的程序在运行之后的黑框里跳出一排烫烫烫烫烫,当时就震惊了。你们能想象一个来自小城,在大学之前没...

32370
来自专栏钱曙光的专栏

一周极客热文:200 行 C 代码编写你的第一个垃圾收集器

一名程序员在许多事物缠身,心里烦乱的情况下如何排解呢?Google Dart团队的一名工程师通过编写一个“垃圾收集器”来调整自己,而且起到了一个非常好的效果,但...

22390
来自专栏玄魂工作室

CTF实战30 CTF题目练习和讲解五

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

42420
来自专栏闵开慧

lamp兄弟连的解决问题套路

首先我想说问这些问题的除了第三个问题可能会有人跟你讲讲什么个意思以外,估计大部分问题都是未遂。。。有人问完没反应还说 “大家不帮我”。。。不是不帮你,是你问问...

35980
来自专栏阮一峰的网络日志

程序员小测试:保守派 vs 自由派

最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。 ? 这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派...

30560
来自专栏WeTest质量开放平台团队的专栏

C++静态代码扫描哪家强?

为了保证游戏程序正常运行,就要在开发的各个环节为代码“体检”,发现并扫除“病症”。静态代码分析是一种常用的“体检”方式,也是保证代码质量的重要手段。 1....

95560
来自专栏大数据

FPGA、DSP、ARM比较

ARM ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软 件。A...

31990

扫码关注云+社区

领取腾讯云代金券