线程死锁

电玩女神 2023-10-17 06:27 95阅读 0赞
  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. // dispatch_queue_t queue = dispatch_queue_create("ming", NULL);
  5. // //如果在串行队列中的block同步再放入一个block,就会导致两个block相互等待,造成线程死锁
  6. // dispatch_sync(queue, ^{
  7. // NSLog(@"1");
  8. //
  9. // dispatch_sync(queue, ^{
  10. // NSLog(@"3");
  11. // });
  12. //
  13. // });
  14. // NSLog(@"2");
  15. //在主线程中,不能同步放入主线程队列block
  16. dispatch_sync(dispatch_get_main_queue(), ^{
  17. NSLog(@"1");
  18. });
  19. NSLog(@"2");
  20. }

解决办法参考下一篇文章 ThreadLock 线程锁、同步一段代码

发表评论

表情:
评论列表 (有 0 条评论,95人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线

    线程死锁是多线程中最头疼的问题,一旦进入线程死锁,很多时候只能通过外部进程重启才能解决问题 线程到达死锁的四个条件: 互斥条件:一个资源每次只能被一个线程使用 资源独占条

    相关 线

    一、死锁概念 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便

    相关 线

    简述:          星期一,新的的一周开始,天气晴朗,风和日丽。本是一个非常不错的心情,突然微信头像闪烁,果不其然又爬虫出问题了,可谓是一入爬虫深似海,项目稳定才见鬼。

    相关 线

    虽然同步锁机制解决了线程安全问题,但是也带来一些弊端:     1. 效率会降低,每次都需要判断锁的状态     2. 可能引发死锁(彼此占用所需要的资源),出现的概率非常小,

    相关 线

    先简单用生活列子介绍死锁,          2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷子,2个人都