GCD的使用

1.异步执行

dispatch_async(dispatch_get_global_queue(0, 0), ^{      
// something 
});

2.同步执行

dispatch_sync(dispatch_get_global_queue(0, 0), ^{      
// something 
});
dispatch_get_global_queue(0, 0) //表示创建一个新的任务(可以理解成线程)执行
dispatch_get_main_queue()       //表示使用主线程调用block

3.一次性执行(常用于单例模式)

 static dispatch_once_t onceToken;
 dispatch_once(&onceToken, ^{    
  // code to be executed once 
 });

4.定时执行

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){    
  // code to be executed on the main queue after delay
});

5.自定义任务队列

dispatch_queue_t urls_queue = dispatch_queue_create("blog.devtang.com", NULL);
dispatch_async(urls_queue, ^{  
  // your code  
});
dispatch_release(urls_queue);

6.任务组,汇总

dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{ 
   // 并行执行的线程一 
});
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{    
   // 并行执行的线程二 
});
dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{   
   // 汇总结果
});


你可能感兴趣的:(ios,gcd)