同步函数:只能在当前线程中执行任务,不具备开启新线程的能力
异步函数:可以在新的线程中执行任务,具备开启新线程的能力
并发队列:可以让多个任务并发执行(自动开启多个线程同时执行任务)
串行队列:让任务按照顺序执行。
并发队列只能在异步函数中有效,没有顺序就是异步执行有顺序就是串行执行。
异步函数+并发队列:会开启多条线程,任务并发执行
异步函数+串行队列:会开启一条线程,任务串行执行
同步函数+并发队列:不会开启新线程,任务串行执行
同步函数+串行队列:不会开启新线程,任务串行执行
结论:只要是同步函数不管是什么队列都不会开启线程任务串行执行。
主线程中执行同步与异步函数的情况:
异步函数+主队列:不会开启线程,所有任务在主线程中串行执行。
同步函数+主队列:死锁 因为主队列的任务必须用主线程执行 而主线程在执行同步函数的任务时是串行的要等到执行完这个任务以后才会去执行队列中的任务 造成死锁。
主队列特点:如果主队列发现当前主线程有任务执行会暂停调用队列中的任务直到主线程空闲(主队列任务执行暂停 主线程完成不了主队列的任务 死循环)