ios多线程之我见
来源:互联网 发布:唐氏筛查 测算软件 编辑:程序博客网 时间:2024/06/05 01:58
引言
随着多核CPU的兴起,传统的线程处理方法已经不能满足现在的需求, 为了解决这个问题,apple ios提出了新的解决方法:
- GCD grand central dispatch,serial dispatch queue按序执行,concurrent queue并发执行
- operation queues, 遵循first in, first out原则
operation queues
ios提供了NSOperation来处理这种类型的queue, NSOperation是一个abstract class,你不能直接使用它,不过它也提供了很多有用的方法。同时iOS也提供了两种NSOperation的子类:NSInvocationOperation和NSBlockOperation。使用的方法很简单,参考下面的步骤和sample code:
- 创建NSInvocationOperation
- 创建NSBlockOperation
- 实现自己的NSOperation子类,必须实现main函数
- 创建NSOperationQueue,调用addOperation来创建线程,调用相关的方法
sample code,
- (IBAction)ExecuteThread:(id)sender { NSLog(@"ExecuteThread"); NSOperationQueue* queue = [[NSOperationQueue alloc] init]; MyNonConcurrentOperation* op = [[MyNonConcurrentOperation alloc] init]; [queue addOperations:[NSArray arrayWithObject:op] waitUntilFinished:YES]; NSLog(@"after addOPeration"); [queue addOperationWithBlock:^{ NSLog(@"addOperationWithBlock in block"); }]; NSLog(@"after addOperationWithBlock"); NSInvocationOperation* iop = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(MyInvocationTask) object:nil]; [queue addOperation:iop]; NSBlockOperation* bop = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"NSBlockOperation in block"); }]; [queue addOperation:bop];
Dispatch Queues
Dispatch Queues有如下三种类型:
- Serial, 按序执行
- Concurrent, 并发
- Main dispatch queue, 在main thread中执行
- ios多线程之我见
- iOS之我见
- iOS 数据存储之我见
- IOS for @property 之我见
- IOS for delegate 之我见
- Android 和iOS 比较之我见
- Android 和iOS 比较之我见
- Android 和iOS 比较之我见
- Android与iOS开发之我见
- IOS设计模式之我见-单例模式
- IOS学习笔记二(指定初始化方法之我见)
- iOS苹果账号/证书/推送证书之我见
- iOS 多线程之NSInvocationOperation
- ios多线程之performSelectorOnMainThread
- ios多线程之NSInvocationOperation
- IOS 之 多线程
- iOS 多线程之----------GCD
- IOS多线程之GCD
- subprocess模块
- 指针初始化与指针赋值有什么区别
- EAS WebService部署
- CToolTipCtrl使用详细解说
- gfp_zone函数
- ios多线程之我见
- UBOOT-2010-03在S3C2440上的移植<一>------------项目搭建
- CSS识别浏览器
- Invoke and BeginInvoke
- oms
- 你需要知道的关于NoSQL数据库的10件事
- android Spinner实现一个二级联动的下拉列表,选定省份后,城市的下拉列表出现相应变化
- Activating components: intents 待续
- 16个螺旋桨的直升机 带你一飞冲天