首页 > 编程语言 > 详细

Operation(Swift)

时间:2018-01-29 19:37:25      阅读:266      评论:0      收藏:0      [点我收藏+]

介绍:

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)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!