iOS多线程管理-Thread,NSOperation,GCD的简单用法

多线程

1.程序是一个可执行文件

2.进程是程序执行的一个操作实体

3.进程是线程的集合

4.多线程就是在一个程序(一个进程)中开启多条线路,为并发执行多个任务提供方便.

什么是线程?

1.进程当中并发执行的代码片段

2.线程是提高代码效率的一个手段

3.IOS中主要用于防止界面假死

4.线程是处理异步任务的主要手段

===============================

NSThread

1.+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

作用:开启并且执行一个线程

2.- (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument

作用:创建一个线程但是不会执行,需要手动调用

3.NSThreadWillExitNotification

作用:通过通知中心监听此消息达到监听线程结束的目的

4.NSlock

作用:线程锁

5.如何取消NSThread

http://images.cnblogs.com/cnblogs_com/kenshincui/613474/o_14.jpg

===============================

NSOperation

1. NSOperation本身不是线程,它是一个线程操作

2.它常用的子类

1)NSInvocationOperation  通过方法指定线程要执行的任务

2)NSBlockOperation 通过block指定要执行的任务

3)可以继承NSOperation,然后重写main函数达到自定义任务的效果

3.NSOperationQueue 线程池,管理线程

可以设置最大开启的线程数 maxConcurrentOperationCount

如果设置为1,则成为串行队列,否则,为并发队列

===============================

GCD

1.什么是GCD

GCD 是苹果iOS4.0之后和block一起出现的技术,是苹果封装的更底层(c)更高效的多线程处理技术,GCD (grand-central-dispatch)是目前使用的最普遍的多线程处理技术,因为高效、简洁、实用

2.GCD的队列类型

1).主线程队列 dispatch_get_main_queue()

2).子线程队列 dispatch_get_global_queue(0, 0)

3.一次性执行(类似线程锁) static dispatch_once_t onceToken

Singleton为自定义的一个继承NSObject的类,时机应用中需要什么类型就写什么类型

4.延时执行 dispatch_time_t ,dispatch_after

5.自定义队列dispatch_queue_create

注意:自定义队列只开启一条线程,执行多个任务时为串行队列

如下打印出来的结果都在线程"number = 2"中执行

6.分组合并dispatch_group_create

时间: 2024-11-08 07:42:34

iOS多线程管理-Thread,NSOperation,GCD的简单用法的相关文章

iOS多线程开发--NSThread NSOperation GCD

多线程 当用户播放音频.下载资源.进行图像处理时往往希望做这些事情的时候其他操作不会被中 断或者希望这些操作过程中更加顺畅.在单线程中一个线程只能做一件事情,一件事情处理不完另一件事就不能开始,这样势必影响用户体验.早在单核处理器时期 就有多线程,这个时候多线程更多的用于解决线程阻塞造成的用户等待(通常是操作完UI后用户不再干涉,其他线程在等待队列中,CPU一旦空闲就继续执行, 不影响用户其他UI操作),其处理能力并没有明显的变化.如今无论是移动操作系统还是PC.服务器都是多核处理器,于是“并行

iOS多线程开发之深入GCD

iOS多线程开发之深入GCD 一.前言 在以前的一些系列博客中,对iOS中线程的管理做了总结,其中涵盖了GCD的相关基础知识:http://my.oschina.net/u/2340880/blog/417746.那里面将GCD的线程管理能力,列队组能力,通过信号和消息控制程序流程的能力都有介绍,这里,我们继续深入GCD的功能,通过GCD来处理一些逻辑更加复杂的代码功能. 二.延时追加任务 当我们在程序中处理延时任务的时候,我们一般会通过两种方式,一种是通过定时器进行延时执行,另外一种是通过如下

iOS多线程技术—自定义NSOperation

iOS多线程技术—自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UITableViewController. // // YYViewController.h // 01-自定义Operation // // Created by apple on 14-6-26. // Copyright (c) 2014年 itcase. All rights reserved.

iOS 多线程学习笔记 —— NSOperation

本文复制.参考自文章:iOS多线程编程之NSOperation和NSOperationQueue的使用 ,主要为了加强个人对知识的理解和记忆,不做他用.原作者声明: 著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享.请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢! 这里对原作者的辛勤工作表示感谢! 1. 使用抽象的 NSOperation 的方式有两种: (1)用库定义好的子类: NSInvocationOperation 和 NSBlo

iOS多线程编程之NSOperation和NSOperationQueue的使用(转自容芳志专栏)

转自由http://blog.csdn.net/totogo2010/ 使用 NSOperation的方式有两种, 一种是用定义好的两个子类: NSInvocationOperation 和 NSBlockOperation. 另一种是继承NSOperation 如果你也熟悉Java,NSOperation就和java.lang.Runnable接口很相似.和Java的Runnable一样,NSOperation也是设计用来扩展的,只需继承重写NSOperation的一个方法main.相当与ja

iOS多线程开发小demo7 GCD队列组

// DYFViewController.m // 623-08-队列组 // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (weak, nonatomic) IBOutlet UIImageVi

iOS多线程开发小demo6 GCD

// DYFViewController.m // 623-07-GCD // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (weak, nonatomic) IBOutlet UIImageVi

GCD的简单用法

/* 创建一个队列用来执行任务,TA属于系统预定义的并行队列即全局队列,目前系统预定义了四个不同运行优先级的全局队列,我们可以通过dispatch_get_global_queue来获取它们 四种优先级 DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW DISPATCH_QUEUE_PRIORITY_BACKGROUND 不得已情况下可用dispatch_queue_c

iOS多线程开发之NSOperation - 快上车,没时间解释了!

一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强,很屌的是加入了操作依赖. 默认情况下,NSOperation单独使用时只能同步执行操作,并没有开辟新线程的能力,只有配合NSOperationQueue才能实现异步执行.讲到这里,我们不难发现GCD和NSOperation实现的方式很像,其实这更像是废话,NSOperation本身就是基于GCD的