GCD全称 Grand Central Dispatch ;
是iOS中对多线程处理的方法之一(其他NSThread,NSOperationQueue,NSInvocationOperation)
iOS系统对GCD的的使用方法大概有以下五种;
1.主线程执行
dispatch_async(dispatch_get_main_queue(), ^{
});
2.后台执行
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
});
3.延迟执行
double deleInseconds = 4.0;
/*
延迟更新 要用秒 乘以 NSEC_PER_SEC 宏定义如下
#define NSEC_PER_SEC 1000000000ull
#define NSEC_PER_MSEC 1000000ull
#define USEC_PER_SEC 1000000ull
#define NSEC_PER_USEC 1000ull
*/
dispatch_time_t poptime = dispatch_time(DISPATCH_TIME_NOW, deleInseconds * NSEC_PER_SEC);
dispatch_after(poptime, dispatch_get_main_queue(), ^{
});
4.只执行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
});
5. 并行执行,并汇总
dispatch_group_t group = dispatch_group_create();
//并行执行线程一
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
NSLog(@"1000====%@",[NSDate date]);
sleep(100);
string = @"10";
});
//并行执行线程二
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
number = @"5";
NSLog(@"5=======%@",[NSDate date]);
});
//汇总结果
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
NSLog(@"------------- %f",string.floatValue + number.floatValue);
});
具体代码参考github地址 :