码迷,mamicode.com
首页 > 编程语言 > 详细

Operation(Swift)

时间:2018-01-29 20:19:10      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:art   .com   ati   cst   star   color   创建   tar   ima   

介绍:

NSOperation是一个抽象类,并不具备封装操作的能力,必须使用它的子类;


 

 

BlockOperation:

只要BlockOperation封装的操作数 > 1,就会异步执行操作,但是不会无限制的创建线程

let blockOpe = BlockOperation()
        blockOpe.queuePriority = .veryHigh
        blockOpe.addExecutionBlock {
            print("BlockOperation执行了",Thread.current)
        }
        blockOpe.addExecutionBlock {
            print("BlockOperation2执行了",Thread.current)
        }
        blockOpe.start()  //开始执行
        //blockOpe.cancel() //取消

结果:技术分享图片

 


 

 

NSOperationQueue

创建队列

1.1 获取主队列以及添加操作到队列,主队列是串行队列,无论是否设置最大并行数量都是在当前线程执行,不会创建新的线程

1    let queue = OperationQueue.main
2         queue.addOperation {
3             for _ in 0...50000{
4                 print("OperationQueue1执行了",Thread.current)
5             }
6         }

结果:技术分享图片

 

2.1 同时具备串行和并发的功能,默认情况下是并发的,可以手动设置为串行队列,通过设置最大并发数属性来更改

1 c func racsTest() {
2         let queue = OperationQueue()
3         queue.maxConcurrentOperationCount = 10
4         queue.addOperation {
5             for _ in 0...50000{
6                 print("OperationQueue1执行了",Thread.current)
7             }
8         }
9         //addOperation已经在内部执行了start方法了

结果:技术分享图片

 

Operation(Swift)

标签:art   .com   ati   cst   star   color   创建   tar   ima   

原文地址:https://www.cnblogs.com/EchoHG/p/8378843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!