关于dispatch_sync block中的线程的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于dispatch_sync block中的线程的问题

2016-03-06 09:54:34 1644 1
![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]);

    });
});
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:54:03

    编译器会有优化,他发现sync方式,就可能直接同一个线程执行

    0 0
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载