-(void)serial
{
// 1.创建一个线程队列 创建出来的队列是串行队列
dispatch_queue_t myQueue = dispatch_queue_create("myQueue", NULL);//第二个参数直接给NULL
dispatch_async(myQueue, ^{
for (int i=0; i<10; i++)
{
//此处就是子线程
[NSThread sleepForTimeInterval:1];
NSLog(@"线程1 %d",i);
}
});
dispatch_async(myQueue, ^{
for (int i=0; i<10; i++)
{
//此处就是子线程
[NSThread sleepForTimeInterval:1];
NSLog(@"线程2 %d",i);
}
});
}
-(void)parallel
{
// *******************如何创建并行的队列
// 通过dispatch_get_global_queue得到的队列为并行队列
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=0; i<10; i++)
{
//此处就是子线程
[NSThread sleepForTimeInterval:1];
NSLog(@"线程1 %d",i);
}
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=0; i<10; i++)
{
//此处就是子线程
[NSThread sleepForTimeInterval:1];
NSLog(@"线程2 %d",i);
//GCD提供的从子线程回到主线程方法
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"这里就回到了主线程");
});
}
});
}
- (void)viewDidLoad
{
[super viewDidLoad];
//[self serial];
[self parallel];
}