- 主要用于在多个异步操作完成之后,统一对非线程安全的对象进行更新,适合于大规模的 I/O 操作
- 由于 NSMutableArray 是非线程安全的,如果出现两个线程在同一时间向数组中添加对象,会出现程序崩溃的情况
- 使用 dispatch_barrier_async 添加的 block 会在之前添加的 block 全部运行结束之后,才在同一个线程顺序执行,从而保证对非线程安全的对象进行正确的操作!
模拟加载图片
- (void)loadPic:(NSInteger)index{
dispatch_async(_queue, ^{
NSLog(@"下载第%zd张图片,%@",index,[NSThread currentThread]);
// 加载index指定的图片
// 获得图片名字
NSString *imageName = [NSString stringWithFormat:@"%