NSOperationQueue小结

将建立的线程增加队列之中。他们都是并发运行的  假设想有一个线程在另外一个线程之后再运行的话 有一个方法能够实现- (void)addDependency:(NSOperation *)op; 这一个在GCD中非常难实现的  仅仅有get_main_queue才是一个接着一个运行的 可是NSOperationQueue就自带的有这种方法  

两个线程并发运行,怎样在这两个线程运行完之后再运行第三个线程?

1:假设用NSOperationQueue实现的话就是先让这两个队列先运行。而且最好设置一个最大线程运行数setMaxConcurrentOperationCount:2 运行完之后有一个方法-
(void)waitUntilAllOperationsAreFinished; 在这种方法里面写第三个线程的启动

2:假设用GCD实现的话。逻辑和NSOperation一样的,最后的方法换成dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{}

时间: 2024-11-08 17:55:33

NSOperationQueue小结的相关文章

小结OC中Retain cycle(循环引用)

retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于C++的极其非人道的内存管理,Objective-C提出了一些机制来减少内存管理的难度. 比如:内存计数. 在 Objective-C中,凡是继承自NSObject的类都提供了两种方法,retain和release.当我们调用一个对象的retain时,这个 对象的内存计数加1,反之,当我们调用rel

iOS线程开发小结

/* 方法名决定是否开启新线程(async,sync),队列类型(全局队列,串行队列)决定开启多少条线程 1.快速线程调用 *开启后台线程执行任务 [self performSelectorInBackground:@selector(test) withObject:nil]; *回到主线程执行任务 [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES]; 2.GCD

iOS 多线程-NSOperation/NSOperationQueue

简介NSOperationQueue(操作队列)是由GCD提供的队列模型的Cocoa抽象,是一套Objective-C的APIGCD提供了更加底层的控制,而操作队列则在GCD之上实现了一些方便的功能,这些功能对于开发者而言通常是最好最安全的选择队列及操作 是面向对象的线程技术提供了一些在GCD中不容易实现的特性,如:限制最大并发数量.操作之间的依赖关系 NSOperationQueue有两种不同类型的队列:主队列和自定义队列主队列运行在主线程上自定义队列在后台执行队列处理的任务是NSOperat

小知识点--小结

一 OC 小结 1 什么是 OC 语言? OC 语言即面向对象语言,它扩展了 ANSI C 语言,将 SmallTalk 式的消息传递机制加入到 ANSI C 中.它是苹果 OS 和 iOS 以及相关的 API,Cocoa 和 Cocoa Touch 的主要编程语言. 2 OC 语言的特点: 支持 C 语言语法,是 ANSI-C 语言的一个超集,是一种高效的编程语言. 是 C 语言面向对象的扩展,完全支持面向对象的特性. 简洁易读的编程风格,使编程和阅读更加清晰. 兼容性好,可以在项目中直接导入

多线程编程(三)NSOperationQueue

本文我们来介绍一下多线程编程工具中的NSOperationQueue. 1. NSOperationQueue简介 配合使用NSOperation和NSOperationQueue也可以实现多线程编程.使用NSOperationQueue方式进行多线程编程,不能够像NSThread一样直接创建线程,也不需要管理,但是可以间接的干预线程,这也是该方式的优点.NSOperationQueue同时引入了Queue(队列)的概念,了解NSOperationQueue使用,首先要了解NSOperation

多线程工具之NSOperationQueue

优点: 使用NSOperationQueue方式进行多线程编程,不能够像NSThread一样直接管理线程(是看不见线程的),也不需要管理,但是可以间接的干预线程. 1.NSOperation 是一个抽象类,用来封装单任务的代码和数据. 抽象类,所以不能直接使用该类,而是创建子类或者一些系统定义的子类 (NSInvocationOperation 或者 NSBlockOperation)来完成实际的任务.   2.NSOperation子类的创建 //子类CNOperation的创建继承NSOpe

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

NSOperationQueue的maxConcurrentOperationCount属性

代码: NSOperationQueue *queue = [[NSOperationQueue alloc] init]; queue.maxConcurrentOperationCount = 2; for (NSUInteger i = 1; i <= 10; ++i) { [queue addOperationWithBlock:^{ NSLog(@"Block %lu", i); [NSThread sleepForTimeInterval:1]; }]; } 输出:

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO