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

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

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

GCD网络多线程---同步运行,异步运行,串行队列,并行队列的更多相关文章

  1. GCD中的dispatch_sync、dispatch_sync 分别与串行、并行队列组合执行小实验

    平常开发中会经常用gcd做一下多线程任务,但一直没有对同步.异步任务在串行.并行队列的执行情况做个全面的认识,今天写了个demo跑了下,还是有些新发现的. 代码如下: - (void)touchesB ...

  2. iOS GCD, 同步,异步,串行队列,并行队列,dispatch_group

    同步,指代码在同一个线程运行 异步,代码在另一个线程运行 串行队列,提交到该队列的block会顺序执行 并行队列,提交到该队列的block会并发执行 如果想等某一队列中所有block都执行完了在执行一 ...

  3. 【原】iOS多线程之异步任务+并行队列情况与异步任务+串行队列(主队列)情况

    异步任务+并行队列 把异步任务放到并行队列进行执行,异步任务会在不同的线程中执行. /*异步执行+并行队列*/ - (IBAction)clickBasic1:(UIButton *)sender { ...

  4. iOS gcd 串行,并行,同步,异步代码研究

    参考文章: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #527eff } span.s1 { } http: ...

  5. java面试一日一题:再谈垃圾回收器中的串行、并行、并发

    问题:请讲下java中垃圾回收器的串行.并行.并发 分析:该问题主要考察在垃圾回收过程中垃圾回收线程和用户线程的关系 回答要点: 主要从以下几点去考虑, 1.串行.并行.并发的概念 2.如何考虑串行. ...

  6. ios--进程/多线程/同步任务/异步任务/串行队列/并行队列(对比分析)

    现在先说两个基本的概念,啥是进程,啥是线程,啥又是多线程;先把这两个总是给弄清再讲下面的 进程:正在进行的程序,我们就叫它进程. 线程:线程就是进程中的一个独立的执行路径.这句话怎么理解呢! 一个程序 ...

  7. iOS:GCD理解1(同步-异步、串行-并行)

    1.并行-异步(ST1与ST2抢占资源) 1-1).获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级. dispatch_queue_t queu ...

  8. iOS 多线程的简单理解(2) 队列 :串行 ,并行,MainQueue,GlobalQueue

    多线程队列是装载线程任务的队形结构.(系统以先进先出的方式调度队列中的任务执行 FIFO).在GCD中有两种队列: 串行队列.并发队列. 队列 :串行队列.并发队列,全局主对列,全局并发队列 2.1. ...

  9. 深入GCD(四):使用串行队列实现简单的预加载

    其主要思路是使用gcd创建串行队列,然后在此队列中先后执行两个任务:1.预加载一个viewController 2.将这个viewController推入代码如下:@implementation DW ...

随机推荐

  1. Logstash之Logstash inputs(file和redis插件)、Logstash outputs(elasticsearch 和redis插件)和Filter plugins

     前期博客 Logstash安装和设置(图文详解)(多节点的ELK集群安装在一个节点就好) Filebeat啊,根据input来监控数据,根据output来使用数据!!! 请移步, Filebeat之 ...

  2. 洛谷P3613 睡觉困难综合征(LCT)

    题目: P3613 睡觉困难综合症 解题思路: LCT,主要是维护链上的多位贪心答案,推个公式:分类讨论入0/1的情况,合并就好了(公式是合并用的) 代码(我不知道之前那个为啥一直wa,改成结构体就好 ...

  3. STM32 之ADC单次转换模式和连续转换模式

    一.背景 在STM32中的AD的单通道采样中可以设置成单次转换模式和连续转换模式,如何理解这两个转换模式的区别,通过程序又是怎样实现的? 二.正文 首先理解单次转换模式,即ADC进行单次转换(单样本) ...

  4. springMVC通过ajax传递参数list对象或传递数组对象到后台

    springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...

  5. 栅格数据AE

    转自原文 栅格数据AE 两个星期以来一直与栅格数据打交道,对AO的栅格部分应该有了一定的理解,下面是自己的一点体会,希望高手指教:-) 1.栅格数据的存储类型 栅格数据一般可以存储为ESRI GRID ...

  6. java的23中设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  7. BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3343  ||  https://www.luogu.org/problem/show?pid=280 ...

  8. 洛谷 P2025 脑力大人之监听电话

    P2025 脑力大人之监听电话 题目背景 画外音: (声明:不要管前面那个,纯属意外,现已经重新编题,绝对原创) 上次海选,我们选出了参赛者中的20%参加本次比赛,现在我们将进行第二轮的筛选,这次的比 ...

  9. ORACLE 11G R2 DG_BROKER 之SWITCH OVER

      官网:http://docs.oracle.com/cd/B12037_01/server.101/b10822/cli.htm 这个是有必要看一下. 注意本人已经完毕一次SWITCHOVER 所 ...

  10. iOS_03_为什么选择ios开发

    为什么选择ios开发 为什么要选择移动开发 * 手机将是人类最离不开的设备之一,硬件软件参数也越来越强,应用需求量剧增. * 移动互联(就是将移动通信和互联网二者结合起来)发展迅速,各大公司都对移动互 ...