多线程(NSThreadNSOperationGCD)编程浅谈

Posted iOS笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程(NSThreadNSOperationGCD)编程浅谈相关的知识,希望对你有一定的参考价值。

一、基本概念


进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动。可以理解成一个运行中的应用程序。
线程:程序执行流的最小单元,线程是进程中的一个实体。
同步:只能在当前线程按先后顺序依次执行,不开启新线程。
异步:可以在当前线程开启多个新线程执行,可不按顺序执行。
队列:装载线程任务的队形结构。
并发:线程执行可以同时一起进行执行。
串行:线程执行只能依次逐一先后有序的执行。


主线程:

一个ios程序运行后,默认会开启1条线程,称为“主线程”或“UI线程”主线程的主要作用:显示/刷新UI界面
处理UI事件(比如点击事件、滚动事件、拖拽事件等)

注意:

一个进程可有多个线程。
一个进程可有多个队列。
队列可分并发队列和串行队列。


二、iOS多线程对比


1.NSThread


每个NSThread对象对应一个线程,真正最原始的线程。


1)优点:NSThread 轻量级最低,相对简单。


2)缺点:手动管理所有的线程活动,如生命周期、线程同步、睡眠等。


2.NSOperation


自带线程管理的抽象类。


1)优点:自带线程周期管理,操作上可更注重自己逻辑, 可以添加操作任务之间的依赖关系。


2)缺点:面向对象的抽象类,只能实现它或者使用它定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。


3.GCD


Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。


1)优点:充分利用CPU多核,自动管理线程的生命周期, 最高效,避开并发陷阱。


2)缺点:基于C实现。


4.选择小结


1)简单而安全的选择NSOperation实现多线程即可。


2)处理大量并发数据,又追求性能效率的选择GCD。


3)NSThread本人选择基本上是在做些小测试上使用,当然也可以基于此造个轮子。

以上是关于多线程(NSThreadNSOperationGCD)编程浅谈的主要内容,如果未能解决你的问题,请参考以下文章

什么是多线程,多进程?

多线程和多进程模式有啥区别

多线程Java多线程学习笔记 | 多线程基础知识

java中啥叫做线程?啥叫多线程?多线程的特点是啥

c++ 多线程与c多线程有啥区别?

IOS多线程安全(线程锁)