多线程

作者: J星O海E | 来源:发表于2021-07-03 18:03 被阅读0次

线程和进程

进程:进程是指系统中正在运行的一个应用程序,进程之间是相互独立的,拥有专有的内存。

线程:线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,一个进程可以拥有多个线程,这些线程可以共享进程里的资源。

为什么要在主线程更新UI

因为 UIKit 框架不是线程安全的框架,当在多个线程进行 UI 操作,有可能出现资源抢夺,导致问题。

多线程技术方案

pthread:一套用 C 语言写的通用的多线程 API,线程生命周期由程序员管理,现在 iOS 中用到 pthread 的多数情况是使用 pthread_mutex 互斥锁,性能较高。

NSThread:使用更加面向对象,简单易用,可直接操作线程对象,线程生命周期由程序员管理,偶尔使用。

GCD: 苹果公司为多核的并行运算提出的解决方案,纯C。会自动充分利用设备的多核。会自动管理线程的生命周期。

NSOperation:是 OC 语言中基于 GCD 的面向对象的封装

GCD

执行任务的方式

dispatch_sync:必须等待当前语句执行完毕,才会执行下一条语句(阻塞);在当前线程中执行任务,不具备开启新线程的能力。

dispatch_async:不用等待当前语句执行完毕,就可以执行下一条语句(不会阻塞);在新的线程中执行任务,具备开启新线程的能力。

队列

串行队列(DISPATCH _QUEUE _SERIAL) 以 FIFO 顺序处理传入的任务,即让任务一个接着一个执行。

并发队列(DISPATCH _QUEUE _CONCURRENT) 可以让多个任务并发(同时)执行(自动开启多个线程执行任务); 并发功能只有在异步函数dispatch_async下才有效; 尽管任务同时执行,但是您可以使用 barrier 栅栏函数在队列中创建同步点(关于栅栏函数后面会讲到)。

主队列(dispatch_queue_main_t) 主队列是一种特殊的串行队列,它特殊在与主线程关联,主队列的任务都在主线程上执行,主队列在程序一开始就被系统创建并与主线程关联。

顺序 & 优先级

1、如果用的是串行队列,那么队列里的任务会按照FIFO依次执行。

限制:必须是串行队列。

2、设置队列的优先级,优先级高的队列里的任务会优先执行。全局队列在创建时的第一个参数就是设置优先级。自定义队列可以使用dispatch_set_target_queue来设置优先级。

限制:必须在不用优先级的队列里。

3、同一个队列,且是并行队列,如何保证顺序

信号量:dispatch_semaphore_t

栅栏函数:dispatch_barrier_async

队列组: Dispatch Group 队列组

相关文章

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • iOS进阶之多线程管理(GCD、RunLoop、pthread、

    深入理解RunLoopiOS多线程--彻底学会多线程之『GCD』iOS多线程--彻底学会多线程之『pthread、...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

      本文标题:多线程

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