我爱编程

IOS学习之对GCD的认识

2018-05-28  本文已影响0人  最强的小强

Grand Central Dispatch,它是苹果为多核的并行运算提出的解决方案,所以会自动合理地利用更多的CPU内核,最重要的是它会自动管理线程的生命周期(创建线程、调度任务、销毁线程),所以我们只需要告诉他干什么就行。同时它使用的也是 c语言,不过由于使用了 Block,使用起来更加方便,而且灵活。

任务和队列

同步执行:它会阻塞当前线程并等待 Block 中的任务执行完毕,然后当前线程才会继续往下运行。

异步执行:当前线程会直接往下执行,它不会阻塞当前线程。

同步执行 异步执行
串行队列 当前线程,一个一个执行 其他线程,一个一个执行
并行队列 当前线程,一个一个执行 开很多线程, 一起执行

创建任务

dispatch_sync(<#queue#>, ^{
      //code here
      NSLog(@"%@", [NSThread currentThread]);
  });
dispatch_async(<#queue#>, ^{
      //code here
      NSLog(@"%@", [NSThread currentThread]);
  });

创建队列

// 主队列
dispatch_queue_t queue= ispatch_get_main_queue();
  // 串行队列
  dispatch_queue_t queue1 = dispatch_queue_create("tk.bourne.testQueue", NULL);
  dispatch_queue_t queue2 = dispatch_queue_create("tk.bourne.testQueue",  DISPATCH_QUEUE_SERIAL);
  // 并行队列
  dispatch_queue_t queue = dispatch_queue_create("tk.bourne.testQueue", DISPATCH_QUEUE_CONCURRENT);
// 全局并行队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
上一篇下一篇

猜你喜欢

热点阅读