转自:http://blogs.oracle.com/yuanlin/entry/concurrency_vs_parallelism_concurrent_programming
By yuanlin onJun 11, 2006
In the danger of hairsplitting, ...
ConcurrencyandparallelismareNOTthe same thing. Two tasksT1andT2are concurrent if the order in which the two tasks are executed in time is not predetermined,
- T1may be executed and finished beforeT2,
- T2may be executed and finished beforeT1,
- T1andT2may be executed simultaneously at the same instance of time (parallelism),
- T1andT2may 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.
Concurrencyis often referred to as a property of a program, and is a concept more general thanparallelism.
Interestingly, wecannotsay the same thing forconcurrent programmingandparallel 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.
Update:More on Concurrency vs ParallelismTHIS BLOG HAS BEEN MOVED TOtouchdreams.net/blog.