一、并发和并行
1、并发(Concurrency)
并发是一个比较宽泛的概念,它单纯的代表计算机能够同时执行多项任务
对于单核处理器来说,它可以通过分配时间片的形式让一个任务运行一段时间,然后切换到另外一个任务再运行一段时间
2、并行(Parallelism)
对于多核处理器来说,我们可以在不同的核心上真正并行的执行任务,而不用通过分配时间片的方式运行
二、同步和异步
同步和异步是两种不同的编程模型
1、同步(Synchronous)
同步代表必须等到前一个任务执行完成之后,才能进行下一个任务
在同步中没有并行或者并发的概念
2、异步(Asynchronous)
异步代表不同的任务之间并不会相互等待,也就说执行任务A的同时也可以执行任务B
一个典型的实现异步的方式就是多线程编程,我们可以创建多个线程并且启动它们,在多核的环境下,每个线程就会被分配到独立的核心上运行,实现真正的“并行”
如果使用的是单核处理器,那么就会通过分配时间片的方式来处理这些多线程,这些线程依然是“并发”地进行
3、JavaScript
JavaScript本身是没有多线程的概念的,通过回调函数机制依然能够实现单线程的“并发”。