Summary
In this chapter, we finally started learning how to write parallel code. I started with a short introduction about processes and threads, single and multithreading, single-tasking, and multitasking. I also explained the most important differences between processes and threads.
After that, we started learning what not to do when writing multithreaded code. Firstly, I brought up the most important dogma—never access the user interface from a background thread. Such strong words deserve proof and I gave you some.
In the next, largest part of the chapter, I slowly explained why you should be extremely careful if you want to access shared data from multiple threads. While simultaneous reading is OK, you should always use protection when reading and writing at the same time.
In the context of parallel programming and data sharing, this protection is implemented by the introduction of one of the synchronization mechanisms. I spent quite some time introducing critical...