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