iOS多线程

  • 多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。 在系统级别内,程序并排执行,系统分配到每个程序的执行时间是由该程序的所需时间和其他程序的所需时间来决定的。然而在每个应用程序内部,存在一个或多个执行线程,它同时或者在一个几乎同时发生的方式里执行不同的任务。系统本身管理这些执行的线程,调度他们在可用的内核上运行,并在需要让其他线程执行的时候抢先打断它们。
    多线程的优势:
    1、多个线程可以提高应用程序的感知响应。
    2、多个线程可以提高应用程序在多核系统上得实时性能。

  • iOS中的多线程主要有三种实现方法:NSThread 、 NSOperation 和GCD
    三者各有优缺点,但在实际开发中,iOS也极力推崇使用GCD多线程方式。

1、NSOperation** 和 **NSOperationQueue
使用**NSOperation**的最简单的方法就是将其放入**NSOperationQueue**中。只要一个操作被加入到队列中,该队列就会启动并开始处理它。一旦操作完成,队列就会释放它。
因为**NSOperation**本身是一个抽象类,不能直接使用类的方法构建对象,需要通过其之类的方法来实现 
可以使用**NSInvokeOperation**通过指定的selector和target来实现操作
可以使用**NSBlockedOperation**通过Block来实现操作。
2、NSThread

相对于另外两种多线程技术,NSThread的优点是轻量级,缺点是需要自己管理线程的生命周期和线程同步。而且线程同步对数据的加锁会有一定的系统开销。
NSThread创建与启动主要由两种方式:

    //直接初始化
    NSThread *thread = [[NSThread alloc] init];
    //利用行为初始化
    NSThread *thread = [NSThread alloc] initWithTarget:(id) selector:(SEL) object:(id)argument;

要进行启动线程
-(void)start;

第二种利用行为初始化参数的具体说明:
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值
target:selector消息发送对象
argument:传输给target的唯一参数,也可以是nil

3、最后说说GCD

GCD(Grand Central Dispatch)是一个大的主题,可以提高代码的执行效率与多核的利用率。包含了语言特性、runtime libraries 以及提供系统级及综合提高的系统增强功能。
GCD就是系统帮用户管理线程,而不需要在编写线程代码。程序员只需要专心编写执行某项功能的代码,添加到block或方法函数中。 有以下两种方法处理block或方法:
1)直接将block加入到dispatch queues (队列)中
2)讲Dispatch source 封装为一个特定类型的系统事件,的系统事件发生时提交一个特定的block对象或函数到dispatch queue ,然后,dispatch queue按先进先出的顺序,串行或并发执行任务。

这里的dispatch queue 是一个基于C的执行自定义任务机制,而 dispatch source 是基于C的系统事件异步处理机制。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS多线程编程 基本知识 1. 进程(process) 进程是指在系统中正在运行的一个应用程序,就是一段程序的执...
    陵无山阅读 11,345评论 1 14
  • 主队列 细心的同学就会发现,每套多线程方案都会有一个主线程(当然啦,说的是iOS中,像 pthread 这种多系统...
    京北磊哥阅读 2,934评论 0 1
  • 前言: 最近想回顾一下多线程问题,看到一篇文章写的非常详细,为了便于以后查找以及加深印象,就照着原文摘录了下文,原...
    FM_0138阅读 4,590评论 1 1
  • 《渔家傲·荷叶初开犹半卷》 年代:宋 作者: 晏殊 荷叶初开犹半卷。荷花欲拆犹微绽。此叶此花真可羡。秋水畔。青凉伞...
    雨_莲阅读 4,502评论 0 0
  • 中国人民大学,是我曾经最喜欢的仅次于北大的那所大学,高中那几年,曾无数次的幻想过自己在这个校园里生活,然而,或许是...
    歌咏今天阅读 3,947评论 0 0

友情链接更多精彩内容