- Parallel Programming with Python
- Jan Palach
- 474字
- 2021-07-16 11:22:20
Identifying parallel programming problems
There are classic problems that brave keyboard warriors can face while battling in the lands where parallel programming ghosts dwell. Many of these problems occur more often when inexperienced programmers make use of workers combined with shared state. Some of these issues will be described in the following sections.
Deadlock
Deadlock is a situation in which two or more workers keep indefinitely waiting for the freeing of a resource, which is blocked by a worker of the same group for some reason. For a better understanding, we will use another real-life case. Imagine the bank whose entrance has a rotating door. Customer A heads to the side, which will allow him to enter the bank, while customer B tries to exit the bank by using the entrance side of this rotating door so that both customers would be stuck forcing the door but heading nowhere. This situation would be hilarious in real life but tragic in programming.
Starvation
This is the issue whose side effects are caused by unfair raking of one or more processes that take much more time to run a task. Imagine a group of processes, A, which runs heavy tasks and has data processor priority. Now, imagine that a process A with high priority constantly consumes the CPU, while a lower priority process B never gets the chance. Hence, one can say that process B is starving for CPU cycles.
Race conditions
When the result of a process depends on a sequence of facts, and this sequence is broken due to the lack of synchronizing mechanisms, we face race conditions. They result from problems that are extremely difficult to filter in larger systems. For instance, a couple has a joint account; the initial balance before operations is $100. The following table shows the regular case, in which there are mechanisms of protection and the sequence of expected facts, as well as the result:

Presents baking operations without the chance of race conditions occurrence
In the following table, the problematic scenario is presented. Suppose that the account does not have mechanisms of synchronization and the order of operations is not as expected.

Analogy to balance the problem in a joint account and race conditions
There is a noticeable inconsistency in the final result due to the unexpected lack of synchronization in the operations sequence. One of the parallel programming characteristics is non-determinism. It is impossible to foresee the moment at which two workers will be running, or even which of them will run first. Therefore, synchronization mechanisms are essential.
- jQuery Mobile Web Development Essentials(Third Edition)
- 深入理解Bootstrap
- 數據庫系統原理及MySQL應用教程
- Python進階編程:編寫更高效、優雅的Python代碼
- Cassandra Data Modeling and Analysis
- Hands-On Functional Programming with TypeScript
- The DevOps 2.5 Toolkit
- Android系統級深入開發
- 移動互聯網軟件開發實驗指導
- Scala編程(第5版)
- JavaScript+jQuery網頁特效設計任務驅動教程
- PowerDesigner 16 從入門到精通
- 數據結構:Python語言描述
- Building Microservices with Go
- Visual C++ 開發從入門到精通