Pre-emptive versus cooperative multitasking

The programs we wrote earlier using multiple threads were examples of concurrency. However, we didn't have to worry about how and when the operating system chose to run the thread—we just had to prepare the threads (or processes), provide the target function, and execute them. The scheduling is taken care of by the operating system.

Every few ticks of the CPU clock, the operating system pre-empts a running thread, and replaces it with another one in a particular core. This can happen due to different reasons, but the programmer doesn't have to worry about the details. He just creates the threads, sets them up with the data they need to process, uses the correct synchronization primitives, and starts them. ...

Get Software Architecture with Python now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.