GCD案例的分析

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");

原文地址:https://www.cnblogs.com/guchengfengyun/p/8286886.html