Parser 之 GCD 总结篇
-
dispatch_once
在 process 周期内,只执行一次,保证唯一行。常见单例,线程,全局静态变量的设置等。 - 实现多读,单写,基本采用 并发队列
DISPATCH_QUEUE_CONCURRENT
,配合dispatch_barrier_async , dispatch_barrier_sync
,在读时采用dispatch_sync
来进行读操作。 -
dispatch_semaphore_t
在此更多是阻断线程,保证,同步中的async 执行完毕之后,继续执行 同步的代码。 也可以当作,在当前线程 最大阻塞多久,继续执行。 -
dispatch_source_t
DISPATCH_SOURCE_TYPE_DATA_ADD
操作,来完成,异步同步任务。每当触发dispatch_source_merge_data(_processingQueueSource, 1);
时,就会调用async 一下 dispatch source 的 event hander ,使用场景:- 可以是进度(文件上传,下载,分片上传,下载等等)比较适合。
- 单纯的一个async 操作,不管在任意线程,都可以采用如此方式,就事件,同步到 指定的queue中去。
-
dispatch_queue_t
可以用来做数据保护,通过dispatch_sync
的方式来访问数据,就可以实现
网友评论