iOS多线程_获取线程队列执行完毕的信号
来源:互联网 发布:同花顺数据接口api 编辑:程序博客网 时间:2024/06/08 05:45
多线程编程中,操作队列NSOperationQueue我们经常会用到的,简化了多线程的操作。至于用法就不多介绍了。这里要说的是队列执行完毕的状态检查。
我们很多时候需要在队列完成之后再进行操作,而何时队列完成,NSOperationQueue并没有内置的didFinishedSelector来供使用,因此需要自己去检查其状态。
因为NSOperationQueue兼容 key-value coding (KVC) and key-value observing (KVO)机制,因此我们可以观察NSOperationQueue的属性。NSOperationQueue可供监控观察的属性有:
operations
- read-only propertyoperationCount
- read-only propertymaxConcurrentOperationCount
- readable and writable propertysuspended
- readable and writable propertyname
- readable and writable property
1.初始_parseQueue
[cpp] view plain copy
- - (NSOperationQueue *)parseQueue
- {
- if (nil == _parseQueue)
- {
- _parseQueue = [[NSOperationQueue alloc] init];
- [_parseQueue setSuspended:YES];
- //[_parseQueue setMaxConcurrentOperationCount:1];
- [_parseQueue addObserver:self
- forKeyPath:@"operations"
- options:0
- context:nil];
- }
- return _parseQueue;
- }
2.加入operation
[cpp] view plain copy
- NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
- selector:@selector(myTask)
- object:nil];
- [self.parseQueue addOperation:operation];
- [operation release];<strong>
- rong>
3.观察值的改变:
[html] view plain copy
- //KVO,观察parseQueue是否执行完
- - (void)observeValueForKeyPath:(NSString *)keyPath
- ofObject:(id)object
- change:(NSDictionary *)change
- context:(void *)context
- {
- if (object == self.parseQueue && [keyPath isEqualToString:@"operations"])
- {
- if (0 == self.parseQueue.operations.count)
- {
- DLog(@"parse finished");
- //other operation
- [_parseQueue setSuspended:YES];
- }
- }
- else
- {
- [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
- }
- }
0 0
- iOS多线程_获取线程队列执行完毕的信号
- 接收线程忙队列数不断增大,无法取出执行完毕的接收线程
- Java多线程--主线程等待所有子线程执行完毕
- java多线程 主线程等子线程执行完毕
- Java多线程--让主线程等待子线程执行完毕
- 线程等待执行完毕
- iOS多线程及其执行队列
- 如何判断线程池里的线程全部执行完毕
- iOS多线程中,队列和执行的排列组合结果分析
- Qt子线程的“信号队列”(转载)
- 多线程 线程队列的实现
- java 等待线程/线程池执行完毕
- Java多线程--让主线程等待所有子线程执行完毕【转】
- [转]Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕代码
- Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕
- SpringMVC详细示例实战教程
- Python学习笔记(五)
- UIwebView的使用,把网页以UIView的形式展示出来
- 【翻译】Ext JS 6.2 早期访问版本发布
- 继续补充基础难点知识_3
- iOS多线程_获取线程队列执行完毕的信号
- Android Studio开发JNI - 第一个JNI程序
- 53. Maximum Subarray
- ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux Error: 2: No suc
- SQLite
- Linux shell 脚本编程学习笔记(echo)
- oracle 数据中文出现乱码 ???
- 约瑟夫环-递归实现
- Ubuntu+Windows双系统,ubuntu开机自动加载分区