美文网首页
iOS GCD中遇到的线程锁死

iOS GCD中遇到的线程锁死

作者: 温柔vs先生 | 来源:发表于2017-08-08 17:03 被阅读0次

先上代码

 - (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%@",[NSThread currentThread]);
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"sync----%@",[NSThread currentThread]);
    });
    NSLog(@"%@",[NSThread currentThread]);
}

控制台输出

我们可以看到控制台只打印输出了第一个log,第二和第三个log为什么没有走进来呢?这是因为当前线程为主线程,而主线程默认都是串行队列(串行队列都是先进先出,一步一步执行的),当你用gcd创建一个同步任务时,并没有开辟一个子线程所以只有当gcd的同步块走完以后才会走第三个log输出,而当他走gcd的同步任务时,此任务又让回到主线程执行任务(dispatch_get_main_queue),主线程又是串行的 所以只有当主线程执行完成以后才会走block里面的任务,从而出现了主线程让gcd先走,而gcd又让主线程先走导致冲突,引起了主线程的锁死。

相关文章

  • iOS GCD中遇到的线程锁死

    先上代码 控制台输出 我们可以看到控制台只打印输出了第一个log,第二和第三个log为什么没有走进来呢?这是因为当...

  • 多线程

    ios中为我们提供了GCD、NSOpration、NSThread 一、GCD多线程与锁GCD 同步异步、串行、并...

  • GCD练习

    GCD练习 ios 多线程 GCD : ios 多线程 全剧队列,异步执行 线程间通信 信号量 文件锁 单利模式 ...

  • iOS 并发,锁,线程同步【二】Operation

    在之前的一篇文章中【iOS 并发,锁,线程同步【一】GCD】,我们讨论了一下 GCD 的并发,锁和线程同步的问题,...

  • iOS 多线程

    参考链接 iOS多线程iOS 多线程:『GCD』详尽总结iOS简单优雅的实现复杂情况下的串行需求(各种锁、GCD ...

  • iOS-知识点

    五个案例让你明白GCD死锁:http://ios.jobbole.com/82622/ iOS开发中多线程间关于锁...

  • iOS多线程:『GCD』详尽总结

    iOS多线程:『GCD』详尽总结 iOS多线程:『GCD』详尽总结

  • GCD

    GCD 异步刷新屏幕在主队列中执行 dispatch_sync()锁死 在当前线程中调用dispatch_sync...

  • iOS中多线程GCD(Grand Center Dispatch

    ios中多线程GCD(Grand Center Dispatch) 特别注意ios中主线程又称作为 UI线程, 主...

  • iOS 多线程面试题(GCD---队列)

    GCD---队列 iOS中,有GCD、NSOperation、NSThread等几种多线程技术方案。 而GCD共有...

网友评论

      本文标题:iOS GCD中遇到的线程锁死

      本文链接:https://www.haomeiwen.com/subject/mdatrxtx.html