dongdongcoder 2016-03-24 07:03 采纳率: 0%
浏览 1496

dispatch_sync block中的线程问题

图片说明

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]);

    });
});

    ![图片说明](https://img-ask.csdn.net/upload/201603/24/1458802918_681208.png)
  • 写回答

1条回答

  • oyljerry 2016-03-24 12:43
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序