网络多线程-GCD的基本使用
2015-11-27 22:04
381 查看
#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]);
});
}
//异步函数+串行队列:只开一条线程
4000
,队列中的任务串行执行
-(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
*/
<
acc9
span style="color:#703daa;">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
@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]);
});
}
//异步函数+串行队列:只开一条线程
4000
,队列中的任务串行执行
-(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
*/
<
acc9
span style="color:#703daa;">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
相关文章推荐
- 网络多线程-NSThread实现线程间通信
- 网络多线程-线程的安全
- 网络多线程-线程的状态
- 网络多线程-NSThread的使用
- 网络多线程-pthread的使用
- 网络多线程下载图片(SDWebImage)
- 网络多线程-下载图片(不用SDWebImage框架)
- 网络多线程-NSOperation线程间通信
- 网络多线程-NSOperation操作依赖和监听
- 网络多线程-NSOperation的常用的方法
- 网络多线程-NSOperation最大并发数
- 网络多线程-NSOperationQueue基本使用
- 网络多线程-NSOperation的简单使用
- 网络多线程 -单例模式业余练习代码MRC与ARC通用
- 网络多线程-单例模式ARC业余练习代码
- 网络多线程-GCD队列组
- 网络多线程 - 01-掌握-GCD快速迭代
- 08 SimpleServer
- Tornado源码分析之http服务器篇
- 关闭手机的通讯网络(无法接通)