GCD的五个案例的分析
案例一:
NSLog(@"A任务...");
dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"任务1..."); });
NSLog(@"B任务...");
流程图:
案例二:
NSLog(@"A任务...");
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ NSLog(@"任务1..."); });
NSLog(@"B任务...");
案例三:
NSLog(@"A任务...");
dispatch_queue_t queue = dispatch_queue_create("serise", DISPATCH_QUEUE_SERIAL); dispatch_async(queue, ^{ NSLog(@"任务1..."); dispatch_sync(queue, ^{ NSLog(@"任务2..."); }); NSLog(@"任务3..."); });
NSLog(@"B任务...");
案例四:
NSLog(@"A任务..."); dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"任务1..."); dispatch_sync(dispatch_get_global_queue(0, 0), ^{ NSLog(@"任务2..."); }); NSLog(@"任务3..."); }); NSLog(@"B任务...");
案例五:
dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"2"); }); NSLog(@"3"); }); NSLog(@"4"); while (1) { } NSLog(@"5");