File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change 1
- ## 1 什么是并发 ##
1
+ ## 1.1 什么是并发 ##
2
2
3
3
并发(Concurrency)在我们的现实世界中随处可见,以至于我们常常忽略了它的存在,比方说你在工作(假设你是一名程序员,你的工作就是编程)的时候也可以听听自己喜欢的音乐,并且你的耳朵并不会因为手头的工作而忽略了声音的存在(当然,除非你自己有意的去忽略它,但你还是能够听得见声音,只是你的大脑可能不会去感受音乐的节奏),此时你的大脑既要控制你的双手敲击键盘,也要控制你的耳朵去感受音乐。因此,在一定程度上,你的大脑就在并发地处理不同的事情,并且每个时刻都可能会侧重处理某件事情,比如某个时刻音乐达到高潮并且是你喜欢的旋律,你可能会放慢或者停止手边的工作,但在另外一个时刻你正在编写关键代码,需要全神贯注来避免 Bug 的出现,你可能会把声音调小一点或者干脆摘掉耳机。所以,我们的大脑就在并发地指导我们完成各种任务,或者换一种说法,我们需要处理的任务并发地征用我们的大脑,大脑就相当于计算机的 CPU,而待处理的任务就相当于计算机程序(更确切地说应该是进程或线程等执行实体)。
4
4
9
9
10
10
与并发相近的另一个概念是并行(Parallel)。和并发所描述的情况一样,并行也是指两个或多个任务被同时执行。但是严格来讲,并发和并行的概念并是不等同的,两者存在很大的差别。下面我们来看看计算机科学家们是怎么区分并发和并行的。
11
11
12
- ### Erlang 之父 Joe Armstrong 的观点 ###
12
+ ### 1.2.1 Erlang 之父 Joe Armstrong 的观点 ###
13
13
14
14
Erlang 是一种通用的并行程序设计语言,在并行、分布式和容错等方面表现优异。下面是 Erlang 官方的介绍:
15
15
@@ -56,8 +56,11 @@ Rob Pike 的观点是: 并发是一次处理(dealing with)很多事情,而
56
56
57
57
作者后面还给出了一个例子来阐述他的观点,感兴趣的读者可以继续阅读:([ Concurrency is not Parallelism(it's better)] ( http://concur.rspace.googlecode.com/hg/talk/concur.html ) )
58
58
59
+ ### 1.2.3 Haskell 语言中的并发与并行###
59
60
60
- ### 1.2.3 其他观点 ###
61
+ (本小节暂未完成)
62
+
63
+ ### 1.2.4 其他观点 ###
61
64
62
65
另外,Intel 中文网站的一篇文章([ 原文链接] ( http://software.intel.com/zh-cn/blogs/2010/11/30/400006465 ) )曾这样写道(可能不是很权威,不过可以大致说明并发与并行的区别),
63
66
@@ -74,5 +77,8 @@ Rob Pike 的观点是: 并发是一次处理(dealing with)很多事情,而
74
77
而两者的联系是:并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。并行性是并发性的特例,而并发性是并行性的扩展(个人不赞同此观点)。
75
78
76
79
80
+ ### 1.2.5 小节 ###
81
+
82
+ 本文主要讲了什么是并发以及并发和并行的联系和区别。总得来说,Joe Armstrong 的观点通俗易懂,而 Rob Pike 有关并发和并行的的观点也很有意思。而关于并发和并行具体的差异,本文最后介绍了一种教科书式的解释。读者可以根据自己的理解来选择认同上述某一种或几种观点。
77
83
78
84
You can’t perform that action at this time.
0 commit comments