浅析iOS多线程技术(概述)


前言

的账号其实申请很久了,因为工(自)作(己)的(很)原(懒)因,就没有怎么写博客,但作为一名"偏执的技术狂"(伪技术),我还是觉得需要写博客,所以也就写下了这篇博客了。

基本概念

在了解和学习iOS的多线程技术之前我们需要先了解几个概念

  • 进程 所谓的进程指的是在系统中正在运行的一个应用程序,其实,每个进程之间都是独立的,每个进程俊运行在其专用且受保护的内存空间之中。
  • 线程 线程其实就是一个进程(应用程序)执行任务所需要的必备条件,意思就是进程的所有任务都是在线程中完成的,每个进程都至少有一个线程,而这至少为一个的线程就叫做主线程
  • 多线程概念 在一个进程中,可以开启多个线程同时进行工作,可以多条线程并发执行不同的任务,多条线程并发执行,而多线程技术也是依赖于多核CPU,所谓的多线程并发,其实就是CPU在快速的切换多条线程之间的调度。
  • iOS主线程概念 在iOS中的主线程,其实就是指一个iOS程序运行后,会默认开启一条线程,而这个线程我们就称之为主线程,也有一些说法叫做UI线程,而之所以叫做UI线程,是因为,在iOS程序中,处理无论是处理UI事件(比如点击事件、滑动事件、拖拽事件等等)以及显示或者刷新UI界面都是在主线程完成的,子线程并不具备处理这些事件的能力。

iOS中多线程技术的优缺点

  • 优点

  • 优点一:在iOS中多线程技术的优点可想而知,那就是它能适当的提高程序的执行效率,举个,好比一头牛耕一亩地和石头牛耕一亩地的区别

  • 优点二:无论是从CPU还是从内存方面,都能有效的提高这些资源的利用率

  • 缺点 众所周知,创建程序是有开销,就好比你拉狮头牛去耕地,那十头牛也是需要东西去喂养的,而在iOS程序下也是一样的,在iOS下开启多线程的成本就是:内核数据结构的上涨(一个线程大约1kb的量)、栈空间的上涨等等

  • 缺点一:如果大量开启线程,则会降低iOS程序的性能

  • 缺点二:线程越多,CPU的在调度线程上得开销就越大,从而会产生耗电加速等一些问题

  • 缺点三:线程开启的越多,应用程序的设计就会更加复杂,比如说:线程之间的通信问题,多线程之间数据共享的一些问题就会随之而来,所以在实际的iOS开发当中,多线程只是适当的开启,而并不能大量的开启。

iOS多线程的实现方案

在这部分内容中,我会详细的进行分析和解答,所以在这里就直接写iOS多线程的实现方案了

  • pthread 一套基于C语言的Unix/Linux/Windows等系统的多线程技术方案,可跨平台、可移植方案,缺点就是线程生命周期需要手动管理。
  • NSThread 基于OC语言的多线程实现方案,相对于pehread而言,更加面向对象开发,优点就是可以直接对线程进行操作,缺点任然是需要手动管理线程的生命周期
  • GCD 基于C语言开发,iOS中多线程的重要实现方案之一,充分利用了设备的多核性质,线程生命周期不需要手动管理
  • NSOPeration 基于OC开发,其本质是苹果基于GCD的一套封装,保留了GCD的优点,使之更加面向对象开发

下一篇博客将重点讲解这四种多线程技术在iOS开发中的实际应用。。。

你可能感兴趣的:(浅析iOS多线程技术(概述))