- Mastering Concurrency in Python
- Quan Nguyen
- 280字
- 2021-06-10 19:23:54
A quick metaphor
Concurrency is a quite difficult concept to fully grasp immediately, so let's consider a quick metaphor, in order to make concurrency and its differences from parallelism easier to understand.
Although some neuroscientists might disagree, let's briefly assume that different parts of the human brain are responsible for performing separate, exclusive body part actions and activities. For example, the left hemisphere of the brain controls the right side of the body, and hence, the right hand (and vice versa); or, one part of the brain might be responsible for writing, while another solely processes speaking.
Now, let's consider the first example, specifically. If you want to move your left hand, the right side of your brain (and only the right side) has to process that command to move, which means that the left side of your brain is free to process other information. So, it is possible to move and use the left and right hands at the same time, in order to do different things. Similarly, it is possible to be writing and talking at the same time.
That is parallelism: where different processes don't interact with, and are independent of, each other. Remember that concurrency is not quite like parallelism. Even though there are instances where processes are executed together, concurrency also involves sharing the same resources. If parallelism is similar to using your left and right hands for independent tasks at the same time, concurrency can be associated with juggling, where the two hands perform different tasks simultaneously, but they also interact with the same object (in this case, the juggling balls), and some form of coordination between the two hands is therefore required.
- Java程序設計與開發
- Java應用開發與實踐
- UI智能化與前端智能化:工程技術、實現方法與編程思想
- Object-Oriented JavaScript(Second Edition)
- INSTANT CakePHP Starter
- Building Mapping Applications with QGIS
- 計算機應用基礎教程(Windows 7+Office 2010)
- ActionScript 3.0從入門到精通(視頻實戰版)
- Access數據庫應用教程(2010版)
- jQuery Mobile Web Development Essentials(Second Edition)
- Java Web開發基礎與案例教程
- 優化驅動的設計方法
- 循序漸進Vue.js 3前端開發實戰
- 多接入邊緣計算實戰
- Mastering Linux Kernel Development