#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self asyncSerial];
}
//异步函数+并发队列:会开线程,多条,队列中的任务并发执行
-(void)asyncConCurrent
{
//1.创建并发队列
/*
第一个参数:C语言的字符串 标签,名称
第二个参数:封装任务的block
*/
dispatch_queue_t queue = dispatch_queue_create("download", DISPATCH_QUEUE_CONCURRENT);
//2.使用异步函数封装任务并且把任务添加到队列中
/*
第一个参数:队列
第二个参数:封装任务的block
*/
dispatch_async(queue, ^{
NSLog(@"1-----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"2-----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"3-----%@",[NSThread currentThread]);
});
}
//异步函数+串行队列:只开一条线程,队列中的任务串行执行
-(void)asyncSerial
{
NSLog(@"start---asyncSerial");
//1.创建串行队列
/*
第一个参数:C语言的字符串 标签,名称
第二个参数:封装任务的block
DISPATCH_QUEUE_SERIAL :串行
DISPATCH_QUEUE_Concurrent:并发
*/
dispatch_queue_t queue = dispatch_queue_create("download", DISPATCH_QUEUE_SERIAL);
//2.使用异步函数封装任务并且把任务添加到队列中
/*
第一个参数:队列
第二个参数:封装任务的block
*/
dispatch_async(queue, ^{
NSLog(@"1-----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"2-----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"3-----%@",[NSThread currentThread]);
});
NSLog(@"end---asyncSerial");
}
//同步函数+串行队列:不会开线程,串行执行
-(void)syncSerial
{
//1.创建串行队列
/*
第一个参数:C语言的字符串 标签,名称
第二个参数:封装任务的block
DISPATCH_QUEUE_SERIAL :串行
DISPATCH_QUEUE_Concurrent:并发
*/
dispatch_queue_t queue = dispatch_queue_create("download", DISPATCH_QUEUE_SERIAL);
//2.使用同步函数封装任务并且把任务添加到队列中
/*
第一个参数:队列
第二个参数:封装任务的block
*/
dispatch_sync(queue, ^{
NSLog(@"1-----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"2-----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"3-----%@",[NSThread currentThread]);
});
}
//同步函数+并发队列:不会开线程,串行执行
-(void)syncConcurrent
{
NSLog(@"start---syncConcurrent");
//1.获取全局并发队列
/*
第一个参数:优先级 DISPATCH_QUEUE_PRIORITY_DEFAULT(默认-0)
第二个参数:0
*/
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//2.使用同步函数封装任务并且把任务添加到队列中
/*
第一个参数:队列
第二个参数:封装任务的block
*/
dispatch_sync(queue, ^{
NSLog(@"1-----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"2-----%@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"3-----%@",[NSThread currentThread]);
});
NSLog(@"end---syncConcurrent");
}
@end