文章目录

  • 1、延后执行:dispatch_after
  • 2、延长时间:dispatch_time_t
  • 3、拓展

1、延后执行:dispatch_after

延时操作的API,通常Queue会在主线程,但是也可以自定义线程

/*** @functoin 延迟操作* @param when:延时时间 dispatch_time() or dispatch_walltime().* @param queue :线程位置* @param block :执行事件
*/
void dispatch_after(dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block);

2、延长时间:dispatch_time_t

/*** @functoin 延长到的时间点* @param when:标识某个时间点,作为第二个参数的参照时间.* 1、如果传递了DISPATCH_TIME_NOW,那么dispatch_time()将使用默认时钟(在苹果平台上基于mach_absolute_time())。* 2、如果使用了DISPATCH_WALLTIME_NOW,则dispatch_time()将使用gettimeofday(3)返回的值。其中dispatch_time(DISPATCH_WALLTIME_NOW, delta)等价于dispatch_walltime(NULL, delta)。* * @param delta :表示相对第一个时间点加上的纳秒数
*/
dispatch_time_t
dispatch_time(dispatch_time_t when, int64_t delta);/// 系统提供了一些宏来简化时间
#define NSEC_PER_SEC 1000000000ull     多少纳秒 = 1秒            1秒 = 10亿纳秒
#define NSEC_PER_MSEC 1000000ull       多少纳秒 = 1毫秒          1毫秒 = 100万纳秒
#define USEC_PER_SEC 1000000ull        多少微秒 = 1秒            1秒 = 100万微秒
#define NSEC_PER_USEC 1000ull          多少纳秒 = 1微秒           1微秒 = 1000 纳秒

注意点:

USEC_PER_SEC需要注意一下:
按照道理来讲,USEC_PER_SEC的单位应该是微秒,如果继续换算成纳秒,还需要再乘以10^3才对。但是既然没有乘,大家在使用的时候就要注意,此宏虽表征微秒与秒的单位换算,但实际代表的时间是以纳秒来计算的。因此,但从计算来讲,只表示1毫秒。

3、拓展

单位定义:

SEC 秒
NSEC 纳秒
MSEC 毫秒
USEC 微秒
PER 每

单位转换:

秒单位的换算:
1s(秒)
=10^3ms(毫秒)
=10^6μs(微秒)
=10^9ns(纳秒)

在当前时间上延迟一秒,可以用如下方法获得时间点:


dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
dispatch_time(DISPATCH_TIME_NOW, 1000 * USEC_PER_SEC);
dispatch_time(DISPATCH_TIME_NOW, USEC_PER_SEC * NSEC_PER_USEC);


应用示例:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(60 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{// 主线程执行代码NSLog(@"执行:main_queue -- 60");
});NSLog(@"执行 -- before");dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_queue_create("zm", NULL), ^{NSLog(@"执行:queue_create -- 3");
});// 这里都是一样的,只不过调用的线程种类不一样
2016-11-05 17:10:43.921 Multithreading[16258:488248] 执行 -- before
2016-11-05 17:10:47.217 Multithreading[16258:488289] 执行:queue_create -- 3
2016-11-05 17:11:44.211 Multithreading[16258:488289] 执行:main_queue -- 60

GCD全解-dispatch_after/dispatch_time-t延迟操作相关推荐

  1. JavaScript对TreeView的操作全解

    JavaScript对TreeView的操作全解 JavaScript对TreeView的操作全解 <script language="C#" runat="ser ...

  2. c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#实现ftp的操作.包括创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询. 在调试ftp前,需要在目标主机上开启ftp功能.这里在本 ...

  3. js系列教程7-DOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  4. js系列教程6-BOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  5. js系列教程1-数组操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  6. jquery系列教程2-style样式操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

  7. jquery系列教程5-动画操作全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  8. jquery系列教程4-事件操作全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  9. jquery系列教程3-DOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

最新文章

  1. WinDbg用法详解
  2. 使用ListView控件展示数据
  3. 能够使用StringBuilder类的常用方法操纵字符串 1215
  4. linux下代码写错了怎么更改_linux系统下poll和epoll内核源代码剖析
  5. 大话数据结构读书笔记系列(七)图
  6. mysql5.6初级使用方法学习第三天
  7. php+ddos原理,PHP DDos的几个防御方法详解_PHP教程
  8. 哔哩哔哩用户需求分析报告
  9. MYSQL中出现 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction的问题解决
  10. 阿里云SLB配置HTPPS方式访问
  11. iPhone音频开发之:转换和录音(第二部分)
  12. 晨控可视化标签在资产管理上的应用及优势
  13. 论如何在网页中插入一张图片
  14. 2023年房地产地段研究报告
  15. 最长递增子序列 O(NlogN)算法
  16. 血与荣耀(第四章-命令的镣铐)
  17. java签到功能的实现_java实现的签到系统
  18. 《代码整洁之道》阅读笔记 2有意义的命名
  19. 博士学历真的很重要吗?
  20. C语言设计模式(继承、封装、多态)

热门文章

  1. php lav,lav是什么意思_lav英文翻译-哈哈词典
  2. Unity烘焙神器Bakery使用流程
  3. Unity Bakery使用说明(二)
  4. 20几岁,你的存款有多少?
  5. Branching Reinforcement Learning
  6. 微信能修图!美图秀秀们惊恐之后该怎么做
  7. hoolilaw案例分析:美国房租转租常见雷区
  8. 手把手教你如何用Python模拟登录淘宝
  9. rabbitMQ 相关知识了解
  10. 电脑网络连接正常,无法连接浏览器,无法上网