美文网首页
多线程中的串行/并行/同步/异步 笔记

多线程中的串行/并行/同步/异步 笔记

作者: 土豆萝卜君 | 来源:发表于2018-10-09 14:05 被阅读0次

    1 线程: 线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一个线程,即主线程

    2 队列 :dispatch_queue_t,一种先进先出的数据结构,线程的创建和回收不需要程序员操作,由队列负责。

    3 串行队列:队列中的任务只会顺序执行       dispatch_queue_t q = dispatch_queue_create(“....”, dispatch_queue_serial);

    4 并行队列:队列中的任务通常会并发执行
    dispatch_queue_t q = dispatch_queue_create("......", dispatch_queue_concurrent);

    5 全局队列:是系统开发的,直接拿过来(get)用就可以;与并行队列类似,但调试时,无法确认操作所在队列。
    dispatch_queue_t q = dispatch_get_global_queue(dispatch_queue_priority_default, 0);

    6 主队列:每一个应用程序对应唯一一个主队列,直接get即可;在多线程开发中,使用主队列更新UI
    dispatch_queue_t q = dispatch_get_main_queue();

    7 dispatch_async 异步操作,并发执行,无法确定任务的执行顺序;dispatch_sync 同步操作,会依次顺序执行,能够确定任务的执行顺序。

    8 串行队列同步:操作不会新建线程,操作顺序执行;
    串行队列异步:操作需要创建一个子线程,会创建子线程,线程的创建和回收不用程序员参与,操作顺序执行。
    并行队列同步:操作不会新建线程,操作顺序执行
    并行队列异步:操作会创建多个线程(有多少任务,就开n个线程执行),操作无序执行,队列前如果有其他任务,等待前面的任务执行完成后再去执行。
    全局队列异步:操作会新建多个线程,操作无序执行,队列前如果有其他任务,会等待前面的任务执行完成后再执行
    全局队列同步:操作不会新建线程,操作顺序执行。
    主队列异步:操作都应该在主线程上顺序执行的,不存在异步。
    主队列同步:如果把主线程中的操作看成一个大的block,那么除非主线程被用户杀掉,否则永远不会结束。主队列中添加的同步操作永远不会执行,会死锁。

    9 队列和线程的区别:
    队列是管理线程的,相当于线程池,能管理线程什么时候执行。
    队列分为串行队列和并行队列
    串行队列:队列中的线程按顺序执行 不会同时执行
    并行队列:队列中的线程会并发执行。

    相关文章

      网友评论

          本文标题:多线程中的串行/并行/同步/异步 笔记

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