
GCD
bravegogo
知行合一,积学养气
展开
-
GCD
基础知识,block是很多高级特性的基础,包括GCD,ReactiveCocoa。GCD操作方式有两种: 同步dispatch_sync(, ), 异步dispatch_async(, ).同步则是等block代码执行完毕才回跳转到方法下一步,异步则是直接顺序执行完当前方法,线程处理block。串行和并行队列介绍: serial queues(串行队列)又称私有调度队列转载 2016-02-02 18:16:39 · 398 阅读 · 0 评论 -
dispatch_Sources\dispatch_read\dispatch_I/O\dispatch_once\dispatch_set_target_queue 汇总
GCD Dispatch Sourceshttps://www.cnblogs.com/hlwfirst/p/5492493.htmlGCD dispatch_read 与 dispatch_write 文件读写http://blog.sina.com.cn/s/blog_6d01cce30101hzws.htmlGCD Dispatch I/Ohttps://blog.youkuaiyun.com/u0...原创 2018-06-15 17:52:40 · 281 阅读 · 0 评论 -
GCD读写文件
转: http://blog.sina.com.cn/s/blog_6d01cce30101hzws.html//GCD读写文件 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); int intbuffer[] = { 1, 2, 3, 4 }; ...转载 2018-06-14 17:35:02 · 528 阅读 · 0 评论 -
GCD 源码分析之全局线程优先级
获取全局队列DISPATCH_EXPORTDISPATCH_CONSTDISPATCH_WARN_RESULTDISPATCH_NOTHROWdispatch_queue_tdispatch_get_global_queue(longidentifier,unsignedlongflags); 获取转载 2017-03-06 14:51:03 · 916 阅读 · 0 评论 -
代码运行效率统计方法 dispatch_benchmark
转载:http://nshipster.cn/benchmarking/ 对于完成有意义的工作来说抽象很重要,但却会带来副作用。为了工作起来更顺手我们需要洞察一些细枝末节来确定一些批量处理的具体逻辑。找到一个特定上下文的有用信息是非常重要的,是具有挑战性的,是高效编程的核心。利用benchmarking,工程师可以揭开他们代码中运行效率的面纱,然后利用获得的信息来优化。转载 2016-09-29 11:40:52 · 830 阅读 · 0 评论 -
dispatch_group
把一组任务提交到队列中,这些队列可以不相关,然后坚挺这组任务完成的事件。几个用到的函数1、dispatch_group_create创建一个调度任务组func dispatch_group_create() -> dispatch_group_t!2、dispatch_group_async 把一个任务异步提交到任务组里func dispatch_group_async原创 2016-07-24 18:58:35 · 394 阅读 · 0 评论 -
iOS多线程的初步研究(九)-- dispatch源
dispatch源(dispatch source)和RunLoop源概念上有些类似的地方,而且使用起来更简单。要很好地理解dispatch源,其实把它看成一种特别的生产消费模式。dispatch源好比生产的数据,当有新数据时,会自动在dispatch指定的队列(即消费队列)上运行相应地block,生产和消费同步是dispatch源会自动管理的。dispatch源的使用基本为以下步转载 2016-05-22 21:09:11 · 342 阅读 · 0 评论 -
iOS多线程的初步研究(一)-- NSThread
对于多线程的开发,iOS系统提供了多种不同的接口,先谈谈iOS多线程最基础方面的使用。产生线程的方式姑且分两类,一类是显式调用,另一类是隐式调用。一、显示调用的类为NSThread。一般构造NSThread的线程对象可通过两种方式:1. 初始化线程主方法:[NSThread detachNewThreadSelector:@selector(run:) toTarget:tar转载 2016-05-22 21:07:15 · 314 阅读 · 0 评论 -
iOS多线程的初步研究(七)-- dispatch对象
谈起iOS的dispatch(正式称谓是Grand Central Dispatch或GCD),不得不说这又是iOS(包括MacOSX)平台的创新,优缺点这里不讨论,只有当你使用时才能真正体会到。我们说dispatch函数的主要目的是实现多任务并发代码,那么要理解dispatch函数,先来了解dispatch对象的定义。 dispatch对象类型的部分定义,主要使用C语言的宏定义:文件转载 2016-05-22 19:50:49 · 285 阅读 · 0 评论 -
dispatch_semaphore
转载请注明出处http://www.cnblogs.com/snailHL/p/3906112.htmldispatch_semaphore是GCD用来同步的一种方式,与他相关的共有三个函数,分别是dispatch_semaphore_create,dispatch_semaphore_signal,dispatch_semaphore_wait。下面我们逐一介绍三个函数:转载 2016-05-19 22:36:59 · 372 阅读 · 0 评论 -
iOS中几种定时器 - 控制了时间
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法。在这个时候,我们就需要用到定时器。然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资料,大概有三种方法:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们的用法。一、NSTimer1. 创建方法1转载 2016-04-17 13:16:55 · 318 阅读 · 0 评论 -
dispatch_barrier_async函数
写篇文章实践一下这个函数 .[objc] view plain copy dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(co转载 2016-04-16 10:18:38 · 338 阅读 · 0 评论 -
多线程并发流程控制之dispatch_group 有关函数
A B C D 4个并发下载任务,怎样在第一时间知道任务全部完成?dispatch_group 可以帮我们实现这样的控制。上代码,看说明.[objc] view plain copydispatch_group_t group = dispatch_group_create(); // 某个任务放进 group转载 2016-04-16 10:16:39 · 856 阅读 · 0 评论 -
dispatch_sync死锁问题研究
dispatch_sync死锁问题研究 首先,看看如下代码的输出是什么?- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"Hello"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"Worl转载 2016-04-14 16:52:45 · 1197 阅读 · 0 评论 -
如何写线程安全的方法
在没有GCD之前,处理同步可以用@synchronized或NSLock这种方式来加锁。但是效率上就不尽如人意。 如何用GCD写好用的线程安全方法? _queue=dispatch_queue_create("com.navy.queue", NULL);- (NSString)someString{ __block NSString *str; dispatch_s转载 2016-02-02 18:17:57 · 567 阅读 · 0 评论 -
iOS 全局并发控制
转载:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/当我用 concurrent queue 来执行大量绘制任务时,偶尔会遇到这种问题: 大量的任务提交到后台队列时,某些任务会因为某些原因(此处是 CGFont 锁)被锁住导致线程休眠,或者被阻塞,concurrent queue 随后会创建新的线程...转载 2018-07-09 16:44:20 · 462 阅读 · 0 评论