• 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-09-14
  • 上海市陆家嘴:打造社区多元治理“共同体” 2019-09-14
  • 2017最具体育活力城市排行榜 2019-09-14
  • 李克勤献唱央视“世界杯主题歌” 2018国语专辑筹备中李克勤 世界杯 2019-09-08
  • 回复@看着就想笑:难道公有制社会主义就不能生存发展吗?事实上公有制会生存发展的更好! 2019-09-03
  • 陵川县全力推进乡村振兴战略 2019-09-01
  • 周国平:男女之爱已经很强烈了,但亲子之爱更强烈 2019-09-01
  • 出租广州市荔湾区芳村大道东169号 2019-08-29
  • (原创)取消“份子钱”是出租车改革必须迈出的一步 2019-08-21
  • Facebook公关掌门离职 是应对隐私丑闻干将 2019-08-20
  • 你这纯粹是胡说八道!农民的宅基地,需要交钱才能使用吗?你敢推行这样的政策吗?你也只敢推行对工人的住宅地,要交钱才能使用!这样合理吗?那些交不起房钱的人,难道应该 2019-08-13
  • 西部网(陕西新闻网)硬科技频道 2019-08-13
  • 新华时评:成果不易,更需诚意与信任呵护 2019-08-09
  • 好好的书报亭放没放样,周围堆得一塌糊涂乱七八糟,真正的主人都搓麻将去了。再现代化造型在金钱至上的社会不可能再有相应的雅知气了。 2019-08-09
  • 2018海创会带你领略黑科技产品 2019-08-05
  • 平码一中一赔多少倍工资:iOS中的线程死锁实例详解

    平码三中山论坛 www.mslzq.tw 什么是线程死锁

    是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

    线程死锁怎么发生

    发生死锁的情况一般是两个对象的锁相互等待造成的。

    死锁发生的条件

    1、互斥条件:所谓互斥就是进程在某一时间内独占资源。

    2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

    3、不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。

    4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    死锁通常是一个线程锁定了一个资源A,而又想去锁定资源B;在另一个线程中,锁定了资源B,而又想去锁定资源A以完成自身的操作,两个线程都想得到对方的资源,而不愿释放自己的资源,造成两个线程都在相互等待,造成了无法执行的情况。

    线程死锁产生的原因:在一个串行队列的任务中,再向这个队列添加同步任务。

    典型例子:

    我们分析一下:

    主队列main_queue是一个串行队列,串行队列的特点就是队列中所有任务必须顺序执行。也就是说必须按照添加到队列中的先后顺序执行。

    我们再看一张图:

    我们在代码中使用dispatch_sync()函数给主队列添加了一个同步任务:

    - (void)viewDidLoad {
     [super viewDidLoad];
     
     dispatch_sync(dispatch_get_main_queue(), ^{
      NSLog(@"线程死锁");
     });
    }

    也就是说后添加的同步任务5是在viewDidLoad任务2之后,只有等待任务2执行完之后才能执行任务5,这就是串行队列的特点。但是任务5是一个同步任务,必须等任务5执行完才能执行其它任务,因此造成互相等待的死锁。

    再看一个例子

    我们知道GCD分为同步任务和异步任务,最开始的例子是主线程的主队列,相当于是一个同步任务。而这个例子证明了,即便是在异步任务只要任务队列是串行队列,在串行队列的任务中再向队列添加同步任务,就会造成死锁,关键点不是同步还是异步,而是串行队列。

    总结

    dispatch_sync()函数会阻塞线程。当前队列是串行队列,任务必须顺序执行。在串行队列的任务A中给这个队列添加同步任务B,相当于说这个串行队列又多了一个任务B,任务B如果想要执行必须等待任务A执行完,但是任务B是同步任务,必须等任务B执行完才能执行其它任务,所以任务AB互相等待,造成死锁。

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对CAD之家的支持。

    为您推荐

    发表评论

    联系我们

    联系我们

    在线咨询: QQ交谈

    地址:中国·贵州·贵阳 友情链接QQ:1034559333 本站QQ群:123733639
    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部

    关于本站 || 版权声明 || 免责条款 || 隐私条款 || 平码三中山论坛 || ||

    Copyright??2018 平码三中山论坛 All Rights Reserved·黔ICP备15000265号-2

  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-09-14
  • 上海市陆家嘴:打造社区多元治理“共同体” 2019-09-14
  • 2017最具体育活力城市排行榜 2019-09-14
  • 李克勤献唱央视“世界杯主题歌” 2018国语专辑筹备中李克勤 世界杯 2019-09-08
  • 回复@看着就想笑:难道公有制社会主义就不能生存发展吗?事实上公有制会生存发展的更好! 2019-09-03
  • 陵川县全力推进乡村振兴战略 2019-09-01
  • 周国平:男女之爱已经很强烈了,但亲子之爱更强烈 2019-09-01
  • 出租广州市荔湾区芳村大道东169号 2019-08-29
  • (原创)取消“份子钱”是出租车改革必须迈出的一步 2019-08-21
  • Facebook公关掌门离职 是应对隐私丑闻干将 2019-08-20
  • 你这纯粹是胡说八道!农民的宅基地,需要交钱才能使用吗?你敢推行这样的政策吗?你也只敢推行对工人的住宅地,要交钱才能使用!这样合理吗?那些交不起房钱的人,难道应该 2019-08-13
  • 西部网(陕西新闻网)硬科技频道 2019-08-13
  • 新华时评:成果不易,更需诚意与信任呵护 2019-08-09
  • 好好的书报亭放没放样,周围堆得一塌糊涂乱七八糟,真正的主人都搓麻将去了。再现代化造型在金钱至上的社会不可能再有相应的雅知气了。 2019-08-09
  • 2018海创会带你领略黑科技产品 2019-08-05
  • 3d开机号 欧盟指数是什么意思 急速赛app 今天p62的开奖结果 欢乐代表什么生肖 重庆体彩网点电话 75秒极速时时号码 彩乐乐群英会开奖走势图 12选5根号技巧 浙江十一选五胆拖