iOS多线程编程的知识梳理

[亡魂溺海] 提交于 2019-11-28 22:58:13

多线程编程也称之为并发编程,由于其作用大,有比较多的理论知识,因此在面试中也是受到面试官的青睐。在日常项目开发中,至少网络请求上是需要使用到多线程知识的,虽然使用第三方的框架比如AFNetworking进行网络请求比较简单,但是也是需要开发人员对多线程、block等知识有比较清晰的思路,才能在遇到问题的时候,能够有条理的找出问题并解决好。

 

本篇文章的定位是梳理下在iOS开发中多线程的知识,也算是一个提纲,一来可以在学习或者是回顾多线程知识时候有个导向,二来也可以作为自己对多线程知识的一个检测,看自己是否能够根据这个提纲,做精细化加工。

 

在iOS开发中,我认为主要是三个方面的知识要非常清楚:

(一)多线程相关的知识

(二)GCD的使用

(三)NSOperation的使用

 

首先是,多线程相关的知识

(一)三者之间的关系:进程、线程、任务

(二)引入多线程技术:概念、原理、优缺点、应用场景

(三)线程中的任务执行是串行

(四)实现多线程的技术:pthread、NSThread、GCD、NSOperation

(五)线程的相关操作:创建、启动、运行、阻塞、销毁

(六)线程间的相关操作:数据共享、线程之间的通信

(七)关于线程的相关术语:主线程、子线程

 

 

然后是,GCD的使用

(一)在GCD中有两个概念需要明确:函数、队列

(二)两种函数:同步函数--在当前线程中执行任务,不具备开启新线程的能力

        异步函数--在新的线程中执行任务,具备开启新线程的能力

(三)两种队列:串行队列--一个任务执行完成后,再执行下一个任务

        并发队列--多个任务同时进行

(四)三种队列实例:主队列、自创建串行队列、全局并发队列

(五)公式就是:用______函数往______队列中添加任务。

组合起来就是六种情况:

用同步函数,往主队列中,添加任务--没有开启新线程、串行执行任务(这种方式会形成死循环!

用同步函数,往自创建串行队列中,添加任务--没有开启新线程,串行执行任务

用同步函数,往全局并发队列中,添加任务--没有开启新线程、串行执行任务

 

用异步函数,往主队列中,添加任务--没有开启新线程、串行执行任务

用异步函数,往自创建串行队列中,添加任务--有开启新线程、串行执行任务

用异步函数,往全局并发队列中,添加任务--有开启新线程、并发执行任务(这个才是发挥GCD效能的方式!

(六)线程间的通信:从子线程回到主线程中执行任务

(七)GCD常用方式:延迟执行、一次性执行、队列组的使用

 

 

最后是,NSOperation的使用

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!