#pragma mark ---- 用异步函数往并发队列中添加任务
- (void)setUpSuperView{
//获取全局的并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//添加任务到队列中,就可以执行任务了 异步函数,具备开启新线程的能力
dispatch_async(queue, ^{
NSLog(@"下载图片1----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片2----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片3----%@",[NSThread currentThread]);
});
//打印主线程
NSLog(@"主线程----%@",[NSThread mainThread]);
//总结:同时开启三个子线程
}
#pragma mark ---用异步函数往串行队列中添加任务
- (void)setUpTowSuperView{
//创建串行队列
dispatch_queue_t queue = dispatch_queue_create("zhangyu", NULL);
//添加任务到队列中执行
dispatch_async(queue, ^{
NSLog(@"下载图片1----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片2----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片3----%@",[NSThread currentThread]);
});
NSLog(@"主线程----%@",[NSThread mainThread]);
//总结:会开启线程,但是只会开启一条线程
}
//丘吉尔说:我最辉煌的成就,是我竟能说服我的妻子嫁给我
#pragma mark ---用同步函数往并发队列中添加任务
- (void)setUpThreeSuperView{
//获取全局的并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//添加任务到队列中执行
dispatch_sync(queue, ^{
NSLog(@"下载图片1----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片2----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片3----%@",[NSThread currentThread]);
});
//打印主线程
NSLog(@"主线程----%@",[NSThread mainThread]);
//总结:不会开启新的线程,并发队列失去了并发的功能
}
#pragma mark --- 用同步函数往串行队列中添加任务
- (void)setUpFourSuperView{
//创建串行队列
dispatch_queue_t queue = dispatch_queue_create("zhangyu", NULL);
//添加任务到队列中执行
dispatch_sync(queue, ^{
NSLog(@"下载图片1----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片2----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片3----%@",[NSThread currentThread]);
});
//打印主线程
NSLog(@"主线程----%@",[NSThread mainThread]);
//总结:不会开启新的线程
}