iOS29 -- 多线程基本概念

iOS29 -- 多线程基本概念_第1张图片
后三种都是基于pthread的封装

iOS29 -- 多线程基本概念_第2张图片
同步和异步决定是否能开启新的线程,并发和串行决定开多少条线程(并发和串行(也就是队列)不具备开启新线程的能力)。使用同步执行或者异步执行,并不影响任务是并发执行还是串行执行,它只影响你这个任务是在哪一个线程执行
主队列的任务都是在主线程执行的,主队列是一种特殊的串行对列,全局并发队列就是一种普通的并发队列
同步就是在当前线程执行任务。队列不能决定是否要开线程,队列只能决定任务的执行方式(是一个接着一个执行
还是多个同时执行)
iOS29 -- 多线程基本概念_第3张图片

iOS29 -- 多线程基本概念_第4张图片
从主队列中取出任务去执行的话,得先等上一个任务要执行完。只有上一个任务执行完,才能从主队列中取出下一个任务去执行

iOS29 -- 多线程基本概念_第5张图片

iOS29 -- 多线程基本概念_第6张图片

iOS29 -- 多线程基本概念_第7张图片
不会产生锁死

iOS29 -- 多线程基本概念_第8张图片

iOS29 -- 多线程基本概念_第9张图片
会产生锁死

iOS29 -- 多线程基本概念_第10张图片

不会产生锁死

iOS29 -- 多线程基本概念_第11张图片

不会产生锁死

iOS29 -- 多线程基本概念_第12张图片
同步往并发队列里面添加任务不会产生锁死。只有同步往串行队列中添加任务才会造成线程锁死

同步往同一个串行队列添加任务,会造成锁死

你可能感兴趣的:(iOS29 -- 多线程基本概念)