美文网首页
GCD异步编程中串行和并行的区别

GCD异步编程中串行和并行的区别

作者: 952625a28d0d | 来源:发表于2016-07-19 10:25 被阅读130次

三种Queue

  • main queue 主线程队列
  • global queue 全局队列
  • 开启一个异步线程
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
            
        }```

- 自定义队列
- 创建一个串行和并行队列

```swift
let serial_queue: dispatch_queue_t! = dispatch_queue_create("www.baidu.com", DISPATCH_QUEUE_SERIAL)

 let concurrent_queue: dispatch_queue_t! = dispatch_queue_create("www.baidu.com", DISPATCH_QUEUE_CONCURRENT)```

- 异步串行队列

```swift
for index in 1...10 {
            dispatch_async(serial_queue, {
                print(index)
            })
        }
        
        print("Running on main thread")```

![Paste_Image.png](https://img.haomeiwen.com/i189984/bb6441dd73c87b1a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 分析打印结果 得知
首先串行队列没有阻塞主线程,然后串行队列一次打印了我们想要的结果,符合预期

- 异步并行队列

for index in 1...10 {
dispatch_async(concurrent_queue, {
print(index)
})
}

    print("running on main thread")```
Paste_Image.png
  • 分析结果 我们发现打印的顺序乱掉,没有阻塞主线程。

  • 异步线程中并行和串行的相同点
    不会阻塞主线程

  • 异步线程中并行和串行的不同点
    串行 在一个子线程中执行 遵守先进先出的原则 并行则会创建多个子线程来执行 不遵守先进先出的原则

  • 同步串行队列

for index in 1...10 {
            dispatch_sync(serial_queue, {
                print(index)
            })
        }
        
        print("Running on main thread")```

![Paste_Image.png](https://img.haomeiwen.com/i189984/476006e260feb51a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 同步并行队列

```swift
 for index in 1...10 {
            dispatch_sync(concurrent_queue, {
                print(index)
            })
        }
        
        print("running on main thread")```

![Paste_Image.png](https://img.haomeiwen.com/i189984/3930598633747676.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 得出结论 
同步串行队列,只会在主线程中执行,会阻塞主线程
同步并行队列,也是只会在主线程进行,并不新建子线程,同样阻塞了主线程





相关文章

  • 2022-07-25

    GCD编程中串行、并行、同步、异步的执行顺序 https://blog.csdn.net/feisongfeiqi...

  • GCD中的串行,并行,同步,异步详解

    gcd中的串行,并行,同步,异步详解 1、gcd中同步与异步的区别: gcd中的线程是由一个线程池来管理的,这个池...

  • GCD异步编程中串行和并行的区别

    三种Queue main queue 主线程队列 global queue 全局队列 开启一个异步线程 for i...

  • 关于多线程GCD 串行/并行、同步/异步

    一、GCD串行/并行队列创建 串行队列: 并行队列: 二、GCD串行/并行队列同步/异步执行 执行内容1: 执行结...

  • 多线程GCD的使用

    一、同步/异步、串行/并行的区别 1.同步/异步 同步/异步是指线程与线程之间的关系。 2.串行/并行 串行、并行...

  • 关于GCD

    文顶顶的博客(关于GCD) 相关的概念: 核心要区分同步异步和串行并行的区别 1.任务:即程序要做的事情(在GCD...

  • 多线程面试题高级

    1、首先认识清楚,多线程分为:并行和串行,,并行和串行又可以包括同步线程和异步线程。GCD仅仅支持FIFO(先入先...

  • IOS多线程总结

    目录 简述 NSThread GCD操作与队列异步操作并行队列同步操作并行队列同步操作串行队列异步操作串行队列队列...

  • GCD 小结

    一、 同步/异步、串行/并行的区别 1.同步/异步 同步/异步是指线程与线程之间的关系. 2.串行/并行 串行/并...

  • iOS多线程操作GCD以及NSOperation简介

    GCD是一套C写的多线程模型,根据队列类型和是否同步可以分为并行同步,并行异步,串行同步,串行异步。具体使用可以查...

网友评论

      本文标题:GCD异步编程中串行和并行的区别

      本文链接:https://www.haomeiwen.com/subject/xxemjttx.html