并发、并行和同步的概念解释与故事理解

文章目录

    • 前言
    • 名词解释
    • 故事

前言

近期发现部分同学对并发、并行和同步三个概念的理解有混淆,所以做一下简单的名词解释,并用一个(写的很烂)的故事来帮助大家理解 :)

名词解释

  1. 并发Concurrency):并发是一种机制,即指“同时有多个请求被发起,或另一种意义上说支持同时有多个线程存在”;支持并发即是要能够包容同时来到的多个请求,或说包容同时存在的多个线程
    • 处理这多个请求的方式可以是并行的,这样就要求硬件需要有多个计算核心
    • 也可以是只有一个计算资源,处理完一个请求再处理第二个 / 在不同请求间不停切换运行,意味着同时可以有许多线程存在,但每一时刻正在跑的线程只有一个
  2. 并行Parallelism):并行是一种处理方式(或可以说是一种架构方式),即指“有多个计算核心,可以在同一时间同时处理多个任务 / 把一个任务分割成小块,在同一时间同时处理多个部分”
  3. 同步Synchronization):同步是一种要求,即指“在支持并发的情况下,不同请求之间(线程之间)不能发生数据冲突或资源抢占冲突”
    • 要做好同步,往往需要保证对某个资源的操作是原子性 (Atomic)的
    • 有时,同步也指“通过某些机制来限制同时存在的多个线程的执行顺序”这一要求

故事

有位女孩名叫 CPU ,很多男孩子都喜欢她。

有一天,男孩 Request-A 来邀请女孩约会,女孩答应了。正当他们进展顺利之时,另一个男孩 Request-B 又找到女孩,请求与她约会。女孩一时尴尬,面对两个男孩子不知道怎么办才好,只能惊慌失措逃回家里。体验了这次不愉快的约会经历后,女孩去看了心理医生,心理医生为她写下诊断报告:“不支持并发Concurrency),同时面对两个约会请求就会panic。”

心理医生为她重新疏导了面对这种尴尬的应对方式。不久后,男孩 Request-C 来邀请女孩约会,女孩欣然答应了。不巧,男孩 Request-D 在这时候又来找她。女孩这次并不害怕了,她也同意了D的请求,可是,自己只有一个人,没法同时和两个男孩约会呀?她只好让 D 等等,先与 C 约会一会,再开始和 D 的约会,进行了一会之后再返回 C 身边,如此往复。女孩对这样的进步非常满意,在日记里写下:“终于支持了并发,真开心,只可惜还不能并行Parallelism)呀。”

女孩以这样的方式生活了一段时间,直到她的生日前夜,她遇到了一个重大的问题。男孩 Request-E 和 Request-F 同时来找女孩约会,女孩如往常一样在他俩之间切换来去。时间到达她生日的当天零点, E 和 F 都计划着在这一时刻在女孩的记事本上写下深情告白,不幸的是,两个人互相争抢,都想先写下告白,一番拉扯之后,记事本只剩下一堆杂乱的废纸。男孩 E 和 F 对女孩记事本的脆弱表现得很不高兴,纷纷指责女孩道:“你支持了并发,怎么没有做好同步Synchronization)!”

女孩非常生气和懊悔,于是她思来想去,想到了一个好办法。她为自己的记事本配了一支 Mutex-Lock 牌的特殊的笔,只有拿着这一支笔才能在这本记事本上写下东西。第二年的生日很快到了,前来写下告白的男孩们不得不排好队,等待前一个人用这只笔写完,将笔传给自己,才能写下自己的告白。女孩终于通过锁实现了同步。

就这样又过了很久,来邀请女孩约会的男孩子们越来越多,女孩渐渐对频繁奔波的约会方式感到劳累,她觉得这样下去效率实在太低了。正值科技蓬勃发展,她决定,花费重金,克隆三个新的自己。从此之后,女孩总能同一时刻应付四个男孩子的约会,而不用来回奔波,约会的效率真的大大提高了。

只可惜的是,她还是只有一本记事本。又一年生日,来写告白的男孩子排成了长龙。她的四个分身却无所事事,不得不等待写告白的男生一个一个的写完,以继续约会。分身们觉得不妥,相互一讨论,得出结论:“我们遇到了瓶颈Bottleneck)啦。”

吸取了这次的教训,女孩的每个分身都各自买了一本记事本,只要在每次生日夜结束之后,请一个分身将四本记事本上的告白信息汇总起来,写在一本本子上就可以了。

经历了这么多风风雨雨,女孩看到科技的发展将为她带来越来越多的新技术,让她约会的效率得到惊人的提高,她觉得未来充满了希望。

你可能感兴趣的:(概念理解,并发,并行,同步)