请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

主队列异步串行问题

  • (void)viewDidLoad {
    [super viewDidLoad];
    //主队列本身也是串行队列
    dispatch_async(dispatch_get_main_queue(), ^{

        [self doSomething];
    });
    

    }
    老师,您说主队列当中提交的任务无论是同步还是异步最终都是在主线程中执行,而主队列也是串行队列,这里怎么不会死锁呢,是因为主队列中的异步方法会创建新的队列吗?有点不明白

正在回答 回答被采纳积分+3

1回答

于海 2018-11-09 21:24:30

同步方式或者异步方式提交到主队列的任务都是在主线程上执行。问题中的异步分派到主队列不会产生卡死,原因是主队列是串行队列,异步方式提交的任务会先排队,当前任务执行完成才会执行后续提交进来的任务

0 回复 有任何疑惑可以回复我~
  • 提问者 陈关健 #1
    嗯嗯,老师我对底层的实现还是有点疑问: 当前的任务viewDidLoad里面不是包括了后续异步提交的block方法吗?其后续异步提交的block跟当前任务的ViewDidLoad底层是怎么做到相互不需要等待了呢
    回复 有任何疑惑可以回复我~ 2018-11-10 14:57:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信