美文网首页
多线程编程 - NSOperationQueue

多线程编程 - NSOperationQueue

作者: N最珍贵 | 来源:发表于2016-10-24 14:28 被阅读0次

一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的。也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异步执行的。

创建一个操作队列:

NSOperationQueue *queue = [[NSOperationQueue alloc] init];  

添加NSOperation到NSOperationQueue中

NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"执行第1次操作,线程:%@", [NSThread currentThread]);

}];

[queue addOperation:operation1];

[queue addOperationWithBlock:^() {

NSLog(@"执行一个新的操作,线程:%@", [NSThread currentThread]); 

}]; 

NSOperation添加到queue之后,通常短时间内就会得到运行。但是如果存在依赖,或者整个queue被暂停等原因,也可能需要等待。

注意:NSOperation添加到queue之后,绝对不要再修改NSOperation对象的状态。因为NSOperation对象可能会在任何时候运行,因此改变NSOperation对象的依赖或数据会产生不利的影响。你只能查看NSOperation对象的状态, 比如是否正在运行、等待运行、已经完成等

添加NSOperation的依赖对象

1.当某个NSOperation对象依赖于其它NSOperation对象的完成时,就可以通过addDependency方法添加一个或者多个依赖的对象,只有所有依赖的对象都已经完成操作,当前NSOperation对象才会开始执行操作。另外,通过removeDependency方法来删除依赖对象。

[operation2 addDependency:operation1];

设置队列的最大并发操作数量

// 每次只能执行两个操作

queue.maxConcurrentOperationCount = 2;

取消Operations

// 取消单个操作

[operation cancel];

// 取消queue中所有的操作

[queue cancelAllOperations];

等待Options完成

// 会阻塞当前线程,等到某个operation执行完毕

[operation waitUntilFinished];

// 阻塞当前线程,等待queue的所有操作执行完毕

[queue waitUntilAllOperationsAreFinished];

暂停和继续queue

// 暂停queue

[queue setSuspended:YES];

// 继续queue

[queue setSuspended:NO];

相关文章

  • NSOperation简单使用

    配合使用NSOperation 和 NSOperationQueue 实现多线程编程。 NSOperation实现...

  • 多线程NSOperation

    NSOperation的作用: 配合使用NSOperation和NSOperationQueue能实现多线程编程....

  • 多线程技术之NSOperation

    NSOperation 配合使用NSOperation和NSOperationQueue也能实现多线程编程。 具体...

  • NSOperation

    配合使用NSOperation和NSOperationQueue也可以实现多线程编程。 实现多线程的步骤先将需要执...

  • iOS NSOperation的基本使用

    NSOperation的作用: 配合使用NSOperation和NSOperationQueue也能实现多线程编程...

  • NSOperation与NSOprationQueue

    NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 ...

  • NSOperation-1

    NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 ...

  • 多线程之NSOperation

    NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 ...

  • iOS多线程开发之NSOperation用法总结

    NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 ...

  • NSOperation

    NSOperation 配合使用NSOperation和NSOperationQueue也能实现多线程编程 对GC...

网友评论

      本文标题:多线程编程 - NSOperationQueue

      本文链接:https://www.haomeiwen.com/subject/rarluttx.html