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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试