美文网首页Objective-C成长之路Swift编程
关于线程的问题:死锁、GCD、 多线程

关于线程的问题:死锁、GCD、 多线程

作者: 程序猿界的cai渣渣 | 来源:发表于2017-02-20 18:16 被阅读27次
关于死锁,学过操作系统的同学们都知道,就是不能继续执行,卡(qia)住在当前状态值。在代码中表现的就是:crash,崩溃,在软件上就是闪退、卡住了。那么,死锁是怎么造成的又应该怎么避免呢?接下来就是见证奇迹的时刻!!

死锁

1、直接在主队列中提交同步任务。
2、在主队列的异步任务执行任务中提交同步任务到主队列。
3、谨慎使用dispath_sync函数。
如图所示:
死锁状态:

使用:dispath_sync函数

死锁
输出结果

使用异步:dispath_async函数

正常
输出结果

GCD

使用GCD主要是应用于多线程的使用,比如:网络请求数据,而UI的界面加载和刷新则需要在主线程里面进行。此处啰嗦一点:在使用MBProgress这个提示框时候,就需要在主线程中使用。
如图:(借用别人的图,之后有详细的讲解链接奉上)


GCD使用
输出结果

这段代码也实现了1234正常的顺序,登录--付款--下载--更新UI的功能,首先说明一下打印结果当中共出现了三个线程,但是注意每一次点击事件我们只用到两个线程,一个是主线程(系统自动创建,)一个是71行我们自己创建的子线程,至于打印结果出现了number = 3这个线程的问题是因为GCD透明优化和系统的原因,我们不用管理这些问题.只要清楚每次点击事件只有两个线程,两个队列(主队列和global)就可以了。

图二:
GCD使用
输出结果
队列
队列问题可以查看以下链接内容

链接:http://www.cnblogs.com/LDSmallCat/p/4910080.html
链接:http://www.cnblogs.com/LDSmallCat/p/4910158.html
此处的问题相信读者可以看明白。如若有错误请喷并指正!!

附上链接:

GCD:https://github.com/Vickeywei/GCD

相关文章

  • GCD同步阻塞原理

    GCD因为功能强大,操作简便,成为苹果官方推荐使用的多线程API。然而GCD也难只要逃涉及多线程就会遇到的死锁问题...

  • gcd常见方法整理

    一、基础介绍 基本的gcd操作 多线程编程会产生资源竞争、死锁、内存大量消耗问题,但是我们还是要用多线程,why?...

  • 带你分分钟了解GCD多线程的死锁

    带你了解GCD多线程的死锁 阐述: 1.什么是GCD? GCD,全称 Grand Central Dispatch...

  • 关于线程的问题:死锁、GCD、 多线程

    关于死锁,学过操作系统的同学们都知道,就是不能继续执行,卡(qia)住在当前状态值。在代码中表现的就是:crash...

  • 多线程

    /*多线程问题 :1.死锁,2,抢占资源线程安全3,消耗大量内存GCD 把任务添加到 DispathQueue分为...

  • 多线程GCD和NSOpreation

    /*多线程问题 :1.死锁,2,抢占资源线程安全3,消耗大量内存GCD 把任务添加到 DispathQueue分为...

  • 多线程之GCD

    线程、多线程 多线程存在的问题 为什么使用多线程? GCD GCD 的 API 介绍Dispatch QueueD...

  • 死锁 GCD 多线程

    死锁 GCD 多线程 Ios - LDSmallCat - 博客园 Ios中GCD死锁困扰很多人,分享一点个人经...

  • iOS-知识点

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

  • iOS多线程(一)

    多线程涉及到的概念: 进程,线程,主线程,任务,队列,死锁,串行,并行,同步,异步,GCD,NSOperation...

网友评论

    本文标题:关于线程的问题:死锁、GCD、 多线程

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