该篇将是 AFNetworking 中 GCD 使用的总结篇。
-
dispatch_once 用来保证线程安全, 只执行一次,可以是全局变量,局部静态变量,单利等
-
concurrent queue 配合 dispatch_sync 来实现读并发, 配合 dispatch_barrier_sync or dispatch_barrier_async 来完成写时单一保护。同步还是异步,可以依赖具体的使用场景来实现。
-
serial queue 与 dispatch_sync ,保证在多线程场景下的,线程安全。
-
与UI相关的,最后结果,通过 dispatch_async 返还到主线程去。
-
AFNetworking 中的通知,最后都是在主线程中发送,需要异步到主线程进行执行。
-
concurrent queue + dispatch_sync + dispatch_barrier_async 可以解决经典的 多读,单写操作问题。使用场景,比如 线程安全的数组,字典,管理集合等等。
-
dispatch_sync 对 main queue 必然会生效;dispatch_barrier_sync 遇到 dispatch_global_queue 是无效的,只对自定义的并行队列生效
网友评论