<一>
主队列是特殊的串行队列;
异步并行,异步串行,这两个具备开启新线程的能力,除此之外,都不具备开启新线程的能力
如图通过几个例子加深理解:执行以下程序会不会出现死锁
串行队列中执行同步任务必然死锁 串行队列中执行异步任务不会死锁,因为异步任务不需要立即执行 异步函数中添加一个同步任务会造成死锁 任务3虽然是同步任务,但他是在新的线程中执行的,所以它不会阻塞线程 任务3虽然是同步任务,但他属于异步队列,不会卡主当前线程总而言之一句话:sync(同步函数)中往串行队列中添加任务,会造成线程阻塞(死锁).
<二>
思考:下面test方法会不会执行
test方法不会执行,因为当前thread执行完任务之后就死了,考察的点是--子线程会不会默认创建runloop,答案是不会修改如下
在里面创建一个runloop,注意:上图传入的模式必须是DefaultMode,NSRunLoopCommonModes不起作用,原因未知
网友评论