- (IBAction)startButton:(id)sender {
NSLog(@"测试开始");
//已经存在并始终可用的全局队列,参数1指定优先级,参数2目前未使用
dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue,^{
dispatch_async(dispatch_get_main_queue(), ^{
//在主线程上运行,类似我们的runOnUIThread方法。
});
dispatch_group_t group=dispatch_group_create();//创建子任务组,提高执行效率
dispatch_group_async(group, queue, ^{
//分发给其他线程并行执行
for (int i=0; i<5; i++) {
NSLog(@"group_async1:%d",i);
sleep(1);
}
});
dispatch_group_async(group, queue, ^{
//分发给其他线程并行执行
for (int i=0; i<8; i++) {
NSLog(@"group_async2:%d",i);
sleep(1);
}
});
dispatch_group_notify(group, queue, ^{
//在组中所有代码块执行完成后再执行,不会去等待主任务结束哦!
for (int i=0; i<6; i++) {
NSLog(@"group_notify:%d",i);
sleep(1);
}
});
for (int i=0; i<30; i++) {
NSLog(@"group_async->main%d",i);
sleep(1);
}
} );//异步执行
}