美文网首页
常用gcd-dispatch_async

常用gcd-dispatch_async

作者: 不可雕的板蓝根 | 来源:发表于2018-08-06 14:55 被阅读0次

线程异步处理后,主线程再处理

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
       NSLog(@"异步线程");
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"异步主线程");
    });
});

延时处理

double delayInSeconds = 2.0;
  dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds*NSEC_PER_SEC));
  dispatch_after(popTime, dispatch_get_main_queue(), ^{
      NSLog(@"演示操作,主线程刷新");
  });

判断三个并发队列执行完毕的方法dispatch_group_notify

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  dispatch_group_t group = dispatch_group_create();
  dispatch_group_async(group, queue, ^{
      NSLog(@"0");
  });
  dispatch_group_async(group, queue, ^{
      NSLog(@"1");
  });
  dispatch_group_async(group, queue, ^{
      NSLog(@"2");
  });
  dispatch_group_notify(group, dispatch_get_main_queue(), ^{
      NSLog(@"执行over");
  });

执行某个方法多少次数后,主线程才执行,dispatch_apply 遍历数组这个方法虽然会开启多个线程来遍历这个数组,但是在遍历完成之前会阻塞主线程。

NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10"];
  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  dispatch_apply([array count], queue, ^(size_t index) {
      NSLog(@"%zu====%@",index,array[index]);
  });
  NSLog(@"阻塞");

计时器

dispatch_source_set_event_handler 计时器
__block int index = 0;
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
NSLog(@"------ index == %d -------",index);
index++;
if (index > 20) {
dispatch_source_cancel(timer);
}
});
dispatch_source_set_cancel_handler(timer, ^{
NSLog(@"取消");
});
dispatch_resume(timer);

相关文章

  • 常用gcd-dispatch_async

    线程异步处理后,主线程再处理 延时处理 判断三个并发队列执行完毕的方法dispatch_group_notify ...

  • Android 中常用的框架集合

    常用框架 常用框架 常用框架 常用框架 常用框架 常用框架 常用框架 UI框架 感谢以上链接博主大佬的奉献。

  • php-常用函数

    常用函数 常用函数: 数组常用函数

  • iOS UIImageView

    常用属性 常用方法 不常用属性

  • JSP 内置对象(下)

    本文包括session(常用)application(常用)page(不常用)pageContext(不常用)pa...

  • 多视图应用-UITabBarController

    UITabBarController 常用属性: 常用方法: UITabBar 常用属性:

  • 集合

    1. 常用容器类 Collection 的常用方法 List 的常用方法 Set 的常用方法 Map 的常用方法 ...

  • GC常用参数

    GC常用参数 Parallel常用参数 CMS常用参数

  • JS第五天

    JS常用类 一、Number 1、常用数字 2、常用进制 3、NaN 4、常用常量 5、常用实例方法 v-hint...

  • 024 JS常用类

    JS常用类 一、Number 1、常用数字 2、常用进制 3、NaN 4、常用常量 5、常用实例方法 v-hint...

网友评论

      本文标题:常用gcd-dispatch_async

      本文链接:https://www.haomeiwen.com/subject/mamwvftx.html