美文网首页
主线程卡死

主线程卡死

作者: Smicro | 来源:发表于2016-06-16 16:13 被阅读762次

场景:不知道为什么主线程卡住了,感觉整个流程没问题。不知道怎么找错误

帮助:感激师傅的提点。

方法:

如果遇到主线程卡死,工程不会崩溃,只是主线程停滞(不知道处理什么,无法选择)。这时候程序依旧在运行。点击下面的暂停按钮:

左边信息提示栏会出现线程的执行情况,你点击第一个用户线程看看是否问题出在这里:

问题找到了:

我把dispatch_async写成了同步的dispatch_sync。

当前程序正在主线程执行,强行把其它操作推倒主线程中让它执行,可是它一次只能做一件事,这样就会导致他无法选择,也就是卡死了。如果使用dispatch_async的话,主线程会把当前的任务执行完,然后在处理推进去的操作。

推荐写法:

if([NSThread isMainThread]) {//judge the thread

//what you want to do in main thread...

} else {

dispatch_async(...);

}

相关文章

  • Android中主线程为什么不会因为Looper.loop()里

    先说结论:主线程在没有消息的时候是阻塞的。主线程没有卡死,简单来说是因为有其他线程通过handler发送消息唤醒主...

  • 多线程的基本概念的理解

    模拟耗时操作 耗时操作对UI的影响 : 会卡死UI / 界面 / 主线程 如何解决耗时操作卡死主线程? 使用多线程...

  • 网络多线程的入门级理解

    模拟耗时操作 耗时操作对UI的影响 : 会卡死UI / 界面 / 主线程 如何解决耗时操作卡死主线程?使用多线程技...

  • 多线程-异步下载图片Demo

    注意点及细节处理:1. 耗时操作放在子线程:下载操作如果耗时较长,在主线程执行就会卡死主界面2. 设置占位图:由于...

  • 同步请求&异步请求

    同步:发送http请求→获取返回结果→分析结果→跳转下一页(主UI线程卡死,等待返回结果) 异步:发送http请求...

  • 主线程卡死

    场景:不知道为什么主线程卡住了,感觉整个流程没问题。不知道怎么找错误 帮助:感激师傅的提点。 方法: 如果遇到主线...

  • 20-多线程面试题

    1.下面代码执行结果 执行结果 - 会卡死 分析如下图 分析:同步执行 + 主队列会卡死当前线程,dispatch...

  • iOS-底层原理(21)-多线程面试题

    1.下面代码执行结果 执行结果 - 会卡死 分析如下图 分析:同步执行 + 主队列会卡死当前线程,dispatch...

  • iOS 10线程死锁

    今天,项目在iOS 10 上运行遇到线程死锁,后台进前台就死锁,导致ui卡死,在点击授权的alert也会卡死,比如...

  • 一次应用启动卡死问题排查记录

    “卡死”,说的比较口语化,换个视角就有思路了:卡死就是线程阻塞了。 说一下背景,项目都是 Java 应用,容器是 ...

网友评论

      本文标题:主线程卡死

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