开发者社区> 问答> 正文

关于dispatch_sync block中的线程的问题

![screenshot](https://oss-cn-hangzhou.aliyuncs.com/yqfiles/0213184c0c20852968df33f6a9038a066a58ef36.png)
dispatch_queue_t myQueue = dispatch_queue_create("com.team", NULL);
NSLog(@"task1 == %@",[NSThread currentThread]);
dispatch_sync(myQueue, ^{
` // task2 为什么在主线程执行,不是应该在block追加到的线程执行吗,就像task4一样,block里的线程应该和 dispatch_sync 的第一个参数的线程相同


    NSLog(@"task2 == %@",[NSThread currentThread]);

});

dispatch_async(myQueue, ^{
    NSLog(@"task3 == %@",[NSThread currentThread]);

    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"task4 == %@",[NSThread currentThread]);

    });
});

展开
收起
爵霸 2016-03-06 09:54:34 1979 0
1 条回答
写回答
取消 提交回答
  • 编译器会有优化,他发现sync方式,就可能直接同一个线程执行

    2019-07-17 18:54:03
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载