Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming

来源:互联网 发布:mac alias 永久生效 编辑:程序博客网 时间:2024/05/17 23:24

Concurrency and parallelism areNOT the same thing. Two tasks T1 and T2 are concurrent if the order in which the two tasks are executed in time is not predetermined,


  •   T1 may be executed and finished beforeT2
  •  T2 may be executed and finished beforeT1
  •  T1 and T2 may be executed simultaneously at the same instance of time (parallelism), 
  •  T1 and T2 may be executed alternatively,
  •   ...


If two concurrent threads are scheduled by the OS to run on one single-core non-SMT non-CMP processor, you may get concurrency but not parallelism. Parallelism is possible on multi-core, multi-processor or distributed systems.


Concurrency is often referred to as a property of a program, and is a concept more general thanparallelism.


Interestingly, we cannot say the same thing forconcurrent programming and parallel programming. They are overlapped, but neither is the superset of the other. The difference comes from the sets of topics the two areas cover. For example, concurrent programming includes topic like signal handling, while parallel programming includes topic like memory consistency model. The difference reflects the different orignal hardware and software background of the two programming practices.


[原始链接:http://blogs.oracle.com/yuanlin/entry/concurrency_vs_parallelism_concurrent_programming]