Concurrency, Parallelism, Threads, Processes, Async and Sync

- 1 min

Concurrency and Parallelism 并发和并行

Concurrency 并发

一边吃火锅一边唱歌,吃一口火锅,唱一句歌。

Concurrency, 一起,但不在同一时间段内,进行两个或者多个任务。In computer science world, concurrency 单核情况下,通过 context switch 实现任务之间的跳转。多核情况下,concurrency 由 Parallelism 实现。

单核,执行通过 context switch 实现

Parallelism 并行

一边吃火锅一边唱歌,吃火锅的同时唱着歌。

Parallelism, 一起,并在同一时间段内,进行两个或者多个任务。

一起,并在同一个时间内


Threads and Processes 线程和进程

Threads 线程

多个手指,多个线程,手指在手上,手为进程

Threads 在系统里面是可以被执行的最小单位,同时被包含在 processes 之中。

Processes 进程

手接受任务,可以从单一手指开始工作,稍后在利用其他手指帮忙。

计算机在跑的一次运行活动,一个程序可以有多个 processes. 通常来讲,process 开始的时候都只有一个主 threads,稍后执行程序的时候,可能会创造多个 threads。

Processes 和 Threads 的关系


Synchronous and Asynchronous 同步和异步

Synchronous 同步

煮完咖啡,包三明治

Sync 执行中,当有多个任务需要被执行的时候,按序进行。

Asynchronous 异步

煮咖啡的时候,同时包三明治

进行一个任务的时候,可以转换并且同时执行另一个任务。


同步异步在单核和多核之间的关系

同步单核

任务等待执行

同步多核

任务在不同的线程等待在执行

异步单核

任务跳转执行,无需等待,但在同一时间内只能执行一个任务

异步多核

一起,在同一个时间内,在多个线程分别执行


异步同步程序编制在并发和并行中的关系


Javascript 异步原理

本地的 javascript 始终都是 single-threaded,只有在 runtime 的环境下才可以实现,并发,异步。

V8(Heap, Stack), Event Loop, Web API, CB Queue


References

* https://medium.com/swift-india/concurrency-parallelism-threads-processes-async-and-sync-related-39fd951bc61d
* https://softwareengineering.stackexchange.com/questions/190719/the-difference-between-concurrent-and-parallel-execution
* https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean
* https://codewala.net/2015/07/29/concurrency-vs-multi-threading-vs-asynchronous-programming-explained/
* https://youtu.be/cN_DpYBzKso
* https://medium.com/flawless-app-stories/basics-of-parallel-programming-with-swift-93fee8425287

Yifan Chen

a junior developer for life

comments powered by Disqus
rss facebook twitter github youtube mail spotify instagram linkedin google pinterest medium wechat