同步队列的死锁问题
来源:互联网 发布:设计游戏需要什么软件 编辑:程序博客网 时间:2024/05/15 19:52
Main.m
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { /* //创建Serial Dispatch Queue dispatch_queue_t serialQueue = dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL); //创建Concurrent Dispatch Queue dispatch_queue_t concurrentQueue = dispatch_queue_create("concurrent queue", DISPATCH_QUEUE_CONCURRENT); //释放,有create就应该有release dispatch_release(serialQueue); dispatch_release(concurrentQueue); */ /* //获取系统主线程 dispatch_queue_t queue = dispatch_get_main_queue(); //获取系统创建默认的异步线程 dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); */ //dispatch_async 使用 dispatch_queue_t queue = dispatch_get_main_queue(); //死锁1 //在主线程队列里面添加一个任务,因为是同步,所以要等到添加的任务执行完才能继续往下走. //但是新添加的任务排在队列的末尾,要执行任务必须要等这前面的任务执行完,因此又回到了第一步。程序卡死,不能输出end// NSLog(@"begin");// dispatch_sync(queue, ^{// NSLog(@"sync1");// });// NSLog(@"end"); //死锁2 //外层 在主线程队列里面添加一个任务,因为是异步,所以不用任何添加的任务执行完就可以继续往下走,因此能够输出end //里层 用同步添加任务到主线程队列,因此要等到添加的任务执行完才能继续往下走,程序卡死,不能输出sync1。 //经验只谈:永远也不要往主线程中同步添加事件.// NSLog(@"begin");// dispatch_async(queue, ^{// dispatch_sync(queue, ^{// NSLog(@"sync1");// });// });// NSLog(@"end");// // [[NSRunLoop currentRunLoop] run]; Person *ps1 = [Person sharePerson]; ps1.age = 30; Person *ps2 = [Person sharePerson]; NSLog(@"%d",ps2.age); } return 0;}Person.h
@interface Person : NSObject@property (nonatomic, assign) int age;+(Person *)sharePerson;@endPerson.m
@implementation Personstatic Person *instace = nil;//+(Person *)sharePerson//{// @synchronized(self){// if (!instace) {// instace = [[Person alloc] init];// }// }// return instace;//}+ (Person *)sharePerson{ //使用GCD创建单利模式 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instace = [[Person alloc] init]; }); return instace;}
0 0
- 同步队列的死锁问题
- 针对项目中同步队列死锁的解决方案
- java 同步死锁问题
- 多线程同步死锁问题
- GCD的队列,死锁
- Java同步中的死锁问题
- Java 多线程同步、死锁问题
- 同步和互斥的一些问题(死锁,优先级逆转)
- 同步和互斥的一些问题(死锁,优先级逆转)
- 同步和互斥的一些问题(死锁,优先级逆转)
- iOS GCD同步队列和同步任务 堵塞和死锁
- c# 通讯死锁问题 线程同步问题
- 线程的同步与死锁
- 浅谈线程同步的死锁
- 浅谈线程同步的死锁
- 线程的同步和死锁
- java线程同步之死锁问题
- 面试问题之线程同步和死锁
- ugg ICNP vWAH mLPT4
- uva 10891 sum
- HDU 1466 计算直线的交点数
- 实现Python HTTP服务方法大总结
- LeetCode 77 Sort Colors
- 同步队列的死锁问题
- 为什么进入Launcher界面之后UART Log就不吐了?
- pragma message的作用
- HEVC专业术语对译
- JavaScript——Array类
- jquery.cookie中的操作
- 解决Android studio安装后首次新建工程gradle下载失败的问题
- rac安装_grid安装校验报错之grid未建立信任关系
- GitHub for windows 环境配置