使用dispatch_queue_concurrent遇到的坑

防不胜防,写了几年的iOS,还是没能避免掉进去

// 利用并发队列,处理数据
__block NSMutableArray<IMMessageStatus *> *resultArray = [NSMutableArray array];
        dispatch_queue_t concurrent = dispatch_queue_create("concurrent", DISPATCH_QUEUE_CONCURRENT);
        dispatch_apply(list.count, concurrent, ^(size_t index) {
            // 处理list
        });
        dispatch_apply(list.count, concurrent, ^(size_t index) {
            // 处理list
        });

两个并发同时处理一个数据源时,产生死锁。
解决办法:
1)合并到一个dispatch_apply中处理,
2)使用dispatch_queue_serial

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容