GCD网络多线程---同步运行,异步运行,串行队列,并行队列
总结:同步(无论是串行还是并行)----不又一次开辟子线程
异步(无论是串行还是并行)----开辟子线程
GCD:
dispatch queue
主线程的main queue
并行队列 global dispatch queue
串行队列serial queues
一般用于按顺序同步訪问
#pragma mark - 载入多线程
- (void) _loadMutil
{
//GCD基于C语言
//1.主对列:(串行队列)
dispatch_queue_t mainQueue=dispatch_get_main_queue();
//2.全局并行队列
);
//3.创建串行队列
dispatch_queue_t queueSerial=dispatch_queue_create("jrqueue1",DISPATCH_QUEUE_SERIAL);
//4.创建并行队列
dispatch_queue_t queueConcu=dispatch_queue_create("jrqueue2",DISPATCH_QUEUE_CONCURRENT);
//同步运行+串行队列
/*
dispatch_sync(queueSerial, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步串行队列1-----%@",[NSThread currentThread]);
});
dispatch_sync(queueSerial, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步串行队列2-----%@",[NSThread currentThread]);
});
*/
//同步运行+并行队列
/*
dispatch_sync(queueConcu, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步并行队列1-----%@",[NSThread currentThread]);
});
dispatch_sync(queueConcu, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步并行队列2-----%@",[NSThread currentThread]);
});
*/
//异步运行+串行队列-----开启一个子线程,且顺序运行
/*
dispatch_async(queueSerial, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步串行队列1-----%@",[NSThread currentThread]);
});
dispatch_async(queueSerial, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步串行队列2-----%@",[NSThread currentThread]);
});
dispatch_async(queueSerial, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步串行队列3-----%@",[NSThread currentThread]);
});
*/
//异步运行+并行队列----开启多个线程,且并发运行(无序)
/*
dispatch_async(queueConcu, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步并行队列1-----%@",[NSThread currentThread]);
});
dispatch_async(queueConcu, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步并行队列2-----%@",[NSThread currentThread]);
});
dispatch_async(queueConcu, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"异步并行队列3-----%@",[NSThread currentThread]);
});
*/
//主对列+同步运行-----死锁(将下面两个加入到主队列,等待前面的运行完毕(loadView。
loadData之类的),可是当运行到这一步时,形成死循环)
/*
dispatch_sync(mainQueue, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步主队列1-----%@",[NSThread currentThread]);
});
dispatch_sync(mainQueue, ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"同步主队列2-----%@",[NSThread currentThread]);
});
*/
}
@end
将以上的方法,在viewDidLoad 中调用一下。看看效果怎样~
最新文章
- EasyUI+Knockout实现经典表单的查看、编辑
- javascript-binarySearch
- 【uoj261】 NOIP2016—天天爱跑步
- 剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)
- IE中无法执行JS脚本 解决WINDOWS SERVER 2008弹出INTERNET EXPLORER增强安全配置正在阻止来自下列网站的内容
- C# 爬虫批量下载文件
- wamp环境下外网访问自己电脑自己写的网站
- FOR XML PATH 解决联接返回结果集各记录问题
- Android开发_字符串处理类-TextUtils类
- 【MongoDB数据库】怎样安装、配置MongoDB
- HTML5 自定义属性 data-*介绍
- Java中参数传递问题
- 网上整理的对于Rest和Restful api的理解
- 无空格字符串的break-all的性能问题
- POJ 3522 Slim Span(极差最小生成树)
- HDU 2586 How far away(dfs+邻接表)
- GANs的回顾
- [USACO4.2]Drainage Ditches
- tf.name_scope()和tf.variable_scope() (转)
- Spring MVC 底层原理
热门文章
- spring定时器完整
- THC=TERMINAL HANDLING CHARGE,碼頭操作費
- 1、Task类构造函数
- gdbserver 使用方法
- Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7(5种办法,2种正解)
- CISP/CISA 每日一题 19
- cocos2d-x嵌入移动MM短代支付IAP2.4的SDK,点击支付崩溃的解决的方法
- 《ZigBee Wireless Networking》学习笔记【1】
- meld文件的脚本
- 【习题 6-1 UVA-673】Parentheses Balance