Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

Threading, Concurrency and Parallelism

After reading numerous white papers and articles, I am wondering about the usage and definition of these terms. They appear to be used interchangeably. Are they synonomous? Is one preffered over another? Does one term denote hardware versus software?
0 Kudos
1 Reply
Black Belt

Threading means (or used to mean) a program that is capable of spliting the processing into more than one execution stream. Threading does not necessarily require multiple processors. Threading will run on systems with one or more processors/processor cores. Advantage is attained, even on a single processor system, when an execution stream (thread) is blocked waiting for I/O, and other execution streams of the program continue to run.

Concurrency means multiple processors are available to run multiple threads and/or multiple programs at the same time.

Parallelism has concurrency as a subset, but also includes vector instructions such as the Single Instruction Multiple Data instructions e.g. add these four floating point variables to four floating point registers.