多线程(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、Cocoa NSOperation、GCD三者使用详解

简介 iOS有三种多线程编程的技术,分别是: (一)NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)...
  • lgm252008
  • lgm252008
  • 2014年10月13日 09:18
  • 14364

iOS并发编程对比总结,NSThread,NSOperation,GCD - iOS

1. 多线程概念进程 正在进行中的程序被称为进程,负责程序运行的内存分配 每一个进程都有自己独立的虚拟内存空间 线程 线程是进程中一个独立的执行路径(控制单元) 一个进程中至少包含一条线程,即主线程 ...
  • zyq522376829
  • zyq522376829
  • 2016年08月30日 21:26
  • 2385

iOS开发之NSThread、NSOperation、GCD三者之间的简略比较

1、首先NSThread、NSOperation、GCD这三种方式的发展历程是由早到晚的,因此后者相比较前者而言更加简单易用,即GCD为当前苹果较为推荐的一种方式。 2、NSThread在控制线程优...
  • u012891546
  • u012891546
  • 2016年03月18日 17:52
  • 634

iOS面试题11- NSThread/NSOperation/GCD的优缺点总结

iOS面试题11- NSThread/NSOperation/GCD的优缺点总结 •NSThread: –优点:NSThread 比其他两个轻量级,使用简单 –缺点:需要自己管理线程的生命周期...
  • Nathan1987_
  • Nathan1987_
  • 2015年12月30日 17:28
  • 1919

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

今天闲来无事,就来总结一下iOS中的多线程开发吧。 iOS有三种多线程编程的技术,分别是: 1.NSThread------每个NSThread对象对应一个线程,量级较轻(真正的多线程...
  • wei78008023
  • wei78008023
  • 2016年03月03日 17:32
  • 852

Objective-C多线程详解(NSThread、NSOperation、GCD)

进程和线程 程序:一个由源代码生成的可执行应用(比如qq,微信…) 进程:进程是指在系统中正在运行的一个应用程序。一个正在运行的程序可以看成一个进程,进程负责去向手机系统申请资源,同时将这...
  • liu1347508335
  • liu1347508335
  • 2016年01月21日 14:33
  • 2167

【OC】IOS多线程之NSoperation和GCD的比较

GCD是基于c的底层api,NSOperation属于object-c类。ios 首先引入的是NSOperation,IOS4之后引入了GCD和NSOperationQueue并且其内部是用gcd实现...
  • chenglibin1988
  • chenglibin1988
  • 2013年10月12日 17:19
  • 14451

多线程NSThread、NSOperation、GCD

Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实 现机制是基于Mach的线程 开发中很少用Mach级的线程,因为Mach级的线程没有提供多线程的基本特征,线程之间是独立的 开发中实现多线...
  • u013134119
  • u013134119
  • 2017年07月03日 19:05
  • 70

多线程 NSThread,NSOperation,GCD

多线程 NSThread,NSOperation,GCD
  • wang1514869032
  • wang1514869032
  • 2016年08月08日 16:46
  • 391

多线程NSThread,GCD,NSOperation?

说到多线程呢,就需要先说下进程,进程是系统正在运行的一个应用程序,一个进程想要执行任务,就至少需要开启一个线程,为了提高资源的利用率,我们可以开启多个线程。但是一个cpu只能运行一个线程,多线程是cp...
  • qq_16146389
  • qq_16146389
  • 2017年08月24日 14:38
  • 41
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程(NSThread、NSOperation、GCD)编程浅谈
举报原因:
原因补充:

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