I might be confusing things here but does concurrency, at least the definition give here, not directly map to task parallelism?
Task parallelism and data parallelism are two important concepts and the tools we need to implement them are very different. The two words used by the author to convey the difference between those two concepts are not chosen optimal in my opinion. There seems to be a hierarchy between concurrency and parallelism whereas task parallelism and data parallelism are directly comparable.
handle mouse events concurrently (could be a()) with keyboard events (could be b())
differ and how does
compute a(0), a(1), ..., a(N) in parallel differ from
handle events from 1000 sockets concurrently which would be something like a(event0) a(event1)?
Don't we require the same tools for "task parallel" and "task concurrent" as well as "data parallel" and "data concurrent"? To me they don't seem orthogonal but I believe they are very much the same thing.
Task parallelism and data parallelism are two important concepts and the tools we need to implement them are very different. The two words used by the author to convey the difference between those two concepts are not chosen optimal in my opinion. There seems to be a hierarchy between concurrency and parallelism whereas task parallelism and data parallelism are directly comparable.