@interface GCDManager : NSObject
-(void)addDispatch_group_async:(void(^)(void))block;
-(void)addDispatch_group_notify:(void(^)(void))block;
@end
#import "GCDManager.h"
@interface GCDManager()
@property (nonatomic, strong) dispatch_group_t gcdGroup;
@property (nonatomic, strong) dispatch_queue_t gcdQueue;
@end
@implementation GCDManager
#pragma mark - 异步多线程并发 * * * * * * * * * * * * * * * * * * * * ** * *
/** 添加一个线程执行结束后会回到addDispatch_group_notify*/
-(void)addDispatch_group_async:(void(^)(void))block{
dispatch_group_enter([self gcdGroup]);
dispatch_group_async([self gcdGroup], [self gcdQueue], ^{
block();
dispatch_group_leave([self gcdGroup]);
});
}
/** 当多个addDispatch_group_async全部执行结束后才执行*/
-(void)addDispatch_group_notify:(void(^)(void))block{
dispatch_group_notify([self gcdGroup], dispatch_get_main_queue(), ^{
block();
});
}
-(dispatch_group_t)gcdGroup{
if(_gcdGroup==nil){
_gcdGroup = dispatch_group_create();
}
return _gcdGroup;
}
- (dispatch_queue_t)gcdQueue{
if(_gcdQueue == nil){
_gcdQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
}
return _gcdQueue;
}
@end