dispatch_queue_t queue = dispatch_queue_create("make", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
dispatch_async(queue, ^{
NSLog(@"2");
dispatch_sync(queue , ^{
NSLog(@"3");
});
NSLog(@"4");
});
NSLog(@"5");
串行同步会造成死锁
dispatch_queue_t queue = dispatch_queue_create("make", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
//队列是一种数据结构
dispatch_async(queue, ^{
NSLog(@"2");
dispatch_async(queue , ^{
NSLog(@"3");
});
NSLog(@"4");
});
NSLog(@"5");
执行顺序 :1 5 2 4 3 异步不阻塞线程
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
//dispatch_group_enter signal+1 当等于0 会唤醒dispatch_group_notify
dispatch_async(queue, ^{
NSLog(@"finish");
dispatch_group_leave(group);//signal-1
});
dispatch_group_enter(group);
dispatch_async(queue, ^{
NSLog(@"finish1");
dispatch_group_leave(group);
});
dispatch_group_notify(group, queue, ^{
NSLog(@"所有任务执行完毕");
});
网友评论