总结:同步(无论是串行还是并行)----不又一次开辟子线程

异步(无论是串行还是并行)----开辟子线程

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 中调用一下。看看效果怎样~

最新文章

  1. EasyUI+Knockout实现经典表单的查看、编辑
  2. javascript-binarySearch
  3. 【uoj261】 NOIP2016—天天爱跑步
  4. 剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)
  5. IE中无法执行JS脚本 解决WINDOWS SERVER 2008弹出INTERNET EXPLORER增强安全配置正在阻止来自下列网站的内容
  6. C# 爬虫批量下载文件
  7. wamp环境下外网访问自己电脑自己写的网站
  8. FOR XML PATH 解决联接返回结果集各记录问题
  9. Android开发_字符串处理类-TextUtils类
  10. 【MongoDB数据库】怎样安装、配置MongoDB
  11. HTML5 自定义属性 data-*介绍
  12. Java中参数传递问题
  13. 网上整理的对于Rest和Restful api的理解
  14. 无空格字符串的break-all的性能问题
  15. POJ 3522 Slim Span(极差最小生成树)
  16. HDU 2586 How far away(dfs+邻接表)
  17. GANs的回顾
  18. [USACO4.2]Drainage Ditches
  19. tf.name_scope()和tf.variable_scope() (转)
  20. Spring MVC 底层原理

热门文章

  1. spring定时器完整
  2. THC=TERMINAL HANDLING CHARGE,碼頭操作費
  3. 1、Task类构造函数
  4. gdbserver 使用方法
  5. Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7(5种办法,2种正解)
  6. CISP/CISA 每日一题 19
  7. cocos2d-x嵌入移动MM短代支付IAP2.4的SDK,点击支付崩溃的解决的方法
  8. 《ZigBee Wireless Networking》学习笔记【1】
  9. meld文件的脚本
  10. 【习题 6-1 UVA-673】Parentheses Balance