GCD 中time使用

时间常量

#define DISPATCH_TIME_NOW 0

#define DISPATCH_TIME_FOREVER (~0ull)

#define NSEC_PER_SEC 1000000000ull    // 定义一秒=10亿纳秒

#define USEC_PER_SEC 1000000ull         // 定义一秒=100万微妙

#define NSEC_PER_USEC 1000ull            // 定义一微妙=100纳秒

时间换算单位

1s(秒second)= 1000ms(毫秒millisecond)= 1000 000μs(微妙microsecond) = 1000 000 000ns(纳秒nanosecond)

dispatch_after:延迟指定的时间后将block异步添加到指定队列中

dispatch_time_t dispatch_time(dispatch_time_t when, int64_t delta)

返回给定时间延迟delta纳秒对应的时间,delta单位是纳秒

实例:延迟0.3秒执行

dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 0.3*NSEC_PER_SEC);

dispatch_after(time, dispatch_get_main_queue(), ^{});

时间: 2024-10-13 17:30:31

GCD 中time使用的相关文章

GCD中如何延迟处理任务

在实际的开发中,经常会遇到想要在指定的时间间隔后执行某个处理 <一>在GCD中提供了dispatch_after函数来完成这一操作 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ <#code to be executed after a specified delay#>

GCD 中Group的使用

使用Group实现:先执行一系列操作(在group中),执行完成后再执行别的操作. 1.创建group及任务队列(目的是让group中的所有任务执行完再执行别的任务) dispatch_group_t group = dispatch_group_create(); //创建一个group        dispatch_queue_t globeQ = dispatch_get_global_queue(0, 0); //该方法获取全局队列(每一次得到的都是同一个队列)    2.提交任务到g

GCD中的队列与任务

一.简介: Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统.它是一个在线程池模式的基础上执行的并行任务.在Mac OS X 10.6雪豹中首次推出,也可在IOS 4及以上版本使用. GCD是一个替代诸如NSThread等技术的很高效和强大的技术.GCD完全可以处理诸如数据锁定和资源泄漏等复杂的异步编程问题.GCD的工作原理是让一个程序,根据可用的处理资源,安排他们在任何可用的处理

关于GCD中的队列

队列分为串行队列,并发队列,全局队列和主队列: 串行队列:一次只能安排一个任务. dispatch_queue_t q = dispatch_queue_create("itcast",DISPATCH_QUEUE_SERIA); DISPATCH_QUEUE_SERIAL==NULL: 并发队列:一次可安排多个任务. dispatch_queue_t q = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCUR

GCD中使用dispatch_after函数延迟处理任务

在实际的开发中,经常会遇到想要在指定的时间间隔后执行某个处理 <一>在GCD中提供了dispatch_after函数来完成这一操作 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ <#code to be executed after a specified delay#>

GCD中一些API的使用

GCD中一些API的使用 1.串行队列和并行队列 iOS中线程分为串行队列和并行队列,串行队列指的是任务按照先后顺序,依次执行:并行队列指的是任务不按照加入的先后顺序,并发的执行. iOS中串行队列通过如下方式进行创建 dispatch_queue_t queue = dispatch_queue_create("cn.bourbonz.www", DISPATCH_QUEUE_SERIAL); 需要注意的是,引号中的内容表示的是对该队列的描述,后面的参数代表的是串行队列. 并行队列通

GCD中的线程死锁问题

GCD 确实好用 ,很强大,相比NSOpretion 无法提供 取消任务的功能. 如此强大的工具用不好可能会出现线程死锁. 如下代码: - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"=================4"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"=================5"); }); NSLog(@"===

iOS多线程---GCD中线程的通信

在子线程的任务完成后,有时候需要从子线程回到主线程,刷新UI. 从子线程中回到主线程,以前已经写过一种方法: [self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO]; 现在GCD又提供了一种方法: dispatch_async(dispatch_get_main_queue(), ^{ self.imageView.image=image; }); 示例

iOS开发 多线程(一)GCD中dispatch队列知识

GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用.所以说,结合block实现的GCD,把函数闭包(Closure)的特性发挥得淋漓尽致. dispatch队列的生成可以有这几种方式: 1. dispatch_queue_t queue = dispatch_queue_create("com.dispatch.serial", DISPATCH_QUEUE_

GCD中不同队列 配合 不同函数的 情况分析

两种函数: 1>sync     同步函数, 2>async   异步函数, 四种队列: 1>main queue  主队列 2>手动创建的串行队列 3>全局并发队列 4>手动创建的并发队列 程序验证的就是两种函数分别配合四种队列的执行情况:共八种.全局并发队列和创建的并发队列执行效果是相同的,没有给出. 结果: 1>死锁,前面文章有过介绍,补充一点是:主线程在当前队列中添加任务才会死锁,添加到其他队列不会 2>同步函数配合四种队列都不会开启新的线程 3&g