3 ms·
Does anyone know the history behind the distinction between concurrency and parallelism presented here? The most frequent reference I see is Pike's "Concurrency
by rrss 7y ago
Does anyone know the history behind the distinction between concurrency and parallelism presented here? The most frequent reference I see is Pike's "Concurrency is not parallelism" talk, but I'm curious who first came up with this distinction.
- rrss 7y agoMore food for thought, as I've been thinking about this: 1. std::thread::hardware_concurrency This is the number of threads that can execute in parallel, no? 2. "Memory-level parallelism" How many memory operations can be "outstanding" at once - seems comparable to a single core issuing multiple disk reads. The memory operations aren't really serviced simultaneously, they just have overlapping lifetimes. For more fun, some people refer to the case where performance is limited by the amount of memory-level parallelism available as "concurrency-limited": https://sites.utexas.edu/jdm4372/2018/01/01/notes-on-non-temporal-aka-streaming-stores/ https://sites.utexas.edu/jdm4372/2018/01/01/notes-on-non-tem...
- pjc50 7y agoYou can have concurrency without parallelism per the definition of the article - on a single processor system with timeslicing, for example. SIMD systems effectively give you parallelism without concurrency - only one instruction is executing, but it's operating on multiple dataflows. Your linked definition of "concurrency limited" seems to refer to utilisation. In the scenario described, how effectively the processor can be utilised depends on how many concurrent tasks it has in progress so it has something to do while one of them is waiting for a cache miss.