美文网首页
GCD多线程—串行、并行、同步、异步线程数目

GCD多线程—串行、并行、同步、异步线程数目

作者: sky_fighting | 来源:发表于2018-10-31 12:23 被阅读9次

一、串行队列

1、同步运行

dispatch_queue_t queue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue, ^{
    NSLog(@"当前线程---%@",[NSThread currentThread]);
});
//结果打印
当前线程---<NSThread: 0x600000441480>{number = 1, name = main}

结论:串行队列-同步运行,不会开启新的线程,线程函数会在创建队列所在的线程中执行(如上,在主线程中创建串行队列,同步线程函数在主线程中执行)

2、异步运行

dispatch_queue_t queue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
    NSLog(@"当前线程1---%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
    NSLog(@"当前线程2---%@",[NSThread currentThread]);
});
//结果打印
当前线程1---<NSThread: 0x600002f3e380>{number = 3, name = (null)}
当前线程2---<NSThread: 0x600002f3e380>{number = 3, name = (null)}

结论:串行队列-异步运行,会开启新的线程,但无论有几个异步函数(dispatch_async),都只开启一个线程

二、并行队列

1、同步运行

dispatch_queue_t queue = dispatch_queue_create("concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(queue, ^{
    NSLog(@"当前线程---%@",[NSThread currentThread]);
});
//结果打印
当前线程---<NSThread: 0x600000b11480>{number = 1, name = main}

结论:并行队列-同步运行,不会开启新的线程

2、异步运行

dispatch_queue_t queue = dispatch_queue_create("concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
    NSLog(@"当前线程1---%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
    NSLog(@"当前线程2---%@",[NSThread currentThread]);
});
//结果打印
当前线程1---<NSThread: 0x600001d0c500>{number = 3, name = (null)}
当前线程2---<NSThread: 0x600001df2540>{number = 4, name = (null)}

结论:并行队列-异步执行:会开启新的线程,且有几个异步函数(dispatch_async),就开启几个线程

结论.png

相关文章

  • 多线程面试题高级

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

  • 不可不说的多线程

    关键字:多线程原理,队列(串行并行),任务(同步异步),NSThread,GCD,NSOperation,@syn...

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

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

  • iOS多线程(一)

    多线程涉及到的概念: 进程,线程,主线程,任务,队列,死锁,串行,并行,同步,异步,GCD,NSOperation...

  • GCD多线程—串行、并行、同步、异步线程数目

    一、串行队列 1、同步运行 结论:串行队列-同步运行,不会开启新的线程,线程函数会在创建队列所在的线程中执行(如上...

  • 多线程相关面试问题

    多线程:GCD、NSOperation、NSThread。 一、GCD 1、同步/异步 和 串行/并发(1)、同步...

  • iOS多线程小结

    同步异步串行并行 同步串行:不开启线程 同步并行:不开启线程 异步串行:最多开启一个线程 异步并行:开启线程 同步...

  • iOS面试 -- 多线程相关

    多线程技术方案 GCD NSOperation NSThread GCD 同步/异步 和串行/并发 dispatc...

  • gcd多线程任务与队列组合分析

    关于gcd中串行队列并行队列,以及同步任务和异步任务的花式嵌套,分析执行结果 多线程调试常用代码: gcd的任务 ...

  • 多线程

    GCD NSOperation NSThread 多线程与锁 一、GCD 同步、异步 和 串行、并发 dispat...

网友评论

      本文标题:GCD多线程—串行、并行、同步、异步线程数目

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