简介
这几个名词一般我们都是在使用到多线程的时候才会出现,那么接下来介绍一下我自己对于它们的理解,如果有误,劳请指教。
串行与并行
串行与并行在多线程中用于修饰队列的性质。
我们都知道,队列中存放的是执行的任务。串行队列指的是处于这条队列中的每个任务,都需要等它的前一个任务从开始执行到结束执行完,这个任务才能开始执行。也就是说,若一个任务如果处于开始执行与结束执行的期间,它的下一个任务不能开始执行。这条队列中的任务遵循FIFO的原则。
而在并行队列中,当一个任务处于开始执行与结束执行的期间,它的下一个任务也可以开始执行。注意,并行队列中的任务也遵循FIFO的原则。
那么现在假设有以下两个任务A与B:
任务A:{ 打印1,打印2 }
任务B:{ 打印3,打印4 }
如果这两个任务处于串行队列,它们遵守FIFO原则,所以任务A首先开始执行,那么任务B必须要等任务A结束执行完即打印完2才能开始执行,所以打印顺序是:1,2,3,4。
如果这两个任务处于并行队列,那么任务B不需要等待任务A结束执行再开始执行,所以我们已知的打印顺序可以是:1必须在2与3前面,3必须在4前面。可以理解为,任务A与任务B遵守了FIFO原则,所以任务A开始执行,但是由于处于并行队列,任务B不需要等任务A执行完即打印2,所以此时2或者3的打印顺序不定,3与4同处于一个任务中,所以4肯定在3后面。
同步与异步
同步与异步主要是用于修饰是否新开一条线程来处理。
同步