GCD之dispatch_source_t

  • 计时器dispatch_source_t
    //timer 运行的线程
    dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //创建timer
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatchQueue);
    //设置timer开始时间、间隔时间、偏差
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    //timer执行体
    dispatch_source_set_event_handler(timer, ^{
        NSLog(@"timer executed code");
    });
    //启动timer
    dispatch_resume(timer);
    
    //停止timer
    dispatch_source_cancel(timer);
  • dispatch_time_t的两种定义方法
    1.dispatch_time(dispatch_time_t when, int64_t delta);
    2.dispatch_walltime(const struct timespec *_Nullable when, int64_t delta);
    其中第二个函数的参数timespec结构体定义如下:
_STRUCT_TIMESPEC
{
    __darwin_time_t tv_sec;
    long            tv_nsec;
};

本文的demo地址:github demo 地址

github demo运行效果:


timer.png

另外其他的GCD备忘链接如下:
GCD之深入学习知识点备忘1
GCD之深入学习知识点备忘2
GCD之深入学习知识点备忘3
GCD之深入学习知识点备忘4

推荐阅读更多精彩内容

  • GCD(Grand Central Dispatch)介绍 GCD是苹果为开发者提供的系统级别的线程管理api,开...
    江户川_乱步阅读 381评论 0 6
  • Dispatch Sources 现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继...
    YangPu阅读 248评论 0 0
  • iOS 多线程系列 -- 基础概述iOS 多线程系列 -- pthreadiOS 多线程系列 -- NSThrea...
    shannoon阅读 1,232评论 0 5
  • 目录(GCD): 关键词 混淆点 场景应用 总结 1. 关键词 线程概念: 独立执行的代码段,一个线程同时间只能执...
    Ryan___阅读 1,072评论 0 3
  • 我的妈妈可能在这个世界上并不是最美的一个,但,在我的心中,她就是这世界上最好的,我爱我的妈妈。 我的妈妈非常严厉,...
    为沵垨候阅读 114评论 0 0