多线程(NSThread、NSOperation、GCD)编程浅谈

原创 2016年05月31日 22:46:12

一.基本概念

进程:
一个具有一定独立功能的程序关于某个数据集合的一次运行活动。可以理解成一个运行中的应用程序
线程:
程序执行流的最小单元,线程是进程中的一个实体。
同步:
只能在当前线程按先后顺序依次执行,不开启新线程。
异步:
可以在当前线程开启多个新线程执行,可不按顺序执行
队列:
装载线程任务的队形结构。
并发:
线程执行可以同时一起进行执行。
串行:
线程执行只能依次逐一先后有序的执行。
主线程:
一个iOS程序运行后,默认会开启1条线程,称为“主线程”或“UI线程”主线程的主要作用:显示/刷新UI界面处理UI事件(比如点击事件、滚动事件、拖拽事件等)

注意

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

二.iOS多线程对比

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

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

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

2.NSOperation:自带线程管理的抽象类。

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

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

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

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

缺点:基于C实现。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS开发探索-多线程(NSThread、NSOperation、GCD)编程浅谈

一、基本概念 进程: 一个具有一定独立功能的程序关于某个数据集合的一次运行活动。可以理解成一个运行中的应用程序。 线程:程序执行流的最小单元,线程是进程中的一个实体。 同步:只能在当前线程按...

iOS多线程学习-NSThread、Cocoa NSOperation、GCD

简介 iOS有三种多线程编程的技术,分别是: (一)NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch) 这三种...

iOS 多线程的实现与使用(NSThread, NSOperation, GCD)

首先我们先对进程,线程,多线程有个了解 进程:一个正在运行的程序 叫一个进程多进程:多个程序正在运行 叫多进程线程:一个程序 或者说 一个进程 都会有一个 或多个线程 如果有一个 我们叫他主线程 主...

iOS多线程NSThread,NSOperation和GCD详解

线程是特别有用的,当你需要执行一个特别耗时的任务,但又不希望它阻塞程序的其余部分功能的执行。特别是,你可以使用线程来避免阻塞应用程序的主线程去处理用户界面的事件和有关的行动的功能。线程还可以用于将大型...

NSThread、NSOperation/NSOperationQueue、GCD多线程

@interface ViewController (){      } @property (nonatomic,strong) NSNumber *dataInt; ...
  • pcaxb
  • pcaxb
  • 2016-03-13 15:16
  • 258

ios笔记-- 多线程应该知道的那几件事 GCD NSThread NSOperation

iphone5s 出来了,CPU 升级到了64位 可以应用到更大的内存了,同时对多线程的处理吞吐能力也教之前提升了十几倍。下面着中总结下ios 下多线程的知识点 1:现有的几种多线程 ...

IOS 多线程NSThread、NSOperation、GCD详解

ios中多线程问题 IOS 多线程NSThread、NSOperation、GCD详解 iOS有三种多线程编程的技术,分别是: 1、NSThread 2、Cocoa NSOperation...

iOS之多线程开发(NSThread,NSOperation,GCD)

今天闲来无事,就来总结一下iOS中的多线程开发吧。 iOS有三种多线程编程的技术,分别是: 1.NSThread------每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.N...

iOS 多线程NSThread、NSOperation、GCD

1,NSThread 1.1初始化 NSThread *thread = [[NSThread alloc]initWithTarget:(id) selector:(SEL) object:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)