How does work concurrency ?
Means that multiple tasks can be executed in an overlapping time period. One of the tasks can begin before the preceding one is completed; however, they won’t be running at the same time. The CPU will adjust time slices per task and appropriately switch contexts. That’s why this concept is quite complicated to implement and especially debug.
While the current thread or process is waiting for input-output operations, database transactions, or launching an external program, another process or thread receives the CPU allocation. On the kernel side, the OS sends an interrupt to the active task to stop it:
If jobs are running on the same core of CPU (single or mutlti-core), they can access the same resources at the same time. To be efficient, task scheduling alga could be useful : FIFO, SJF (Shortest-job-first) and RR (Round-Robin).
How does work parallelism ?
The ability to execute independent tasks of a program in the same instant of time. Contrary to concurrent tasks, these tasks can run simultaneously on another processor core, another processor, or an entirely different computer that can be a distributed system.