print ( "current:\(Thread.current)" ) let ob = Observable < Int >. of ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 )                 . observe ( on : ConcurrentDispatchQueueScheduler . init ( qos : . background )) //                .subscribe(on: ConcurrentDispatchQueueScheduler(qos: .background) ) . subscribe ( onNext : { print ($0, Thread . current )})                 . disposed ( by : self. disposeBag )

打印结果:

打印结果可以发现我们的队列是一个 并发异步 队列,这里说明下为什么要发送100个元素,因为我们的序列首先是一个管子类似我们的队列遵循 FIFO 的原则。所以如果很小的话基本上就是到91都是线程7.

observeOn 这里通过指定的调度器上 运行其观察者回调 ,当我们使用使用 subscribeon 的时候表示在指定调度器上运行其 订阅和取消订阅

类似我们GCD中 并发队列同步函数和异步函数 的效果。

2. SerialDispatchQueueScheduler

  • observeOn

    指定串行队列环境运行其观察者回调

  • subscribeon
  • 指定串行队列环境运行其订阅和取消订阅

    3. OperationQueueScheduler

  • observeOn
  • OperationQueue 进行封装默认是并发

  • subscribeOn
  • 4. MainScheduler

  • observeOn
  • subscribeOn
  • 5. 总结

    以上就是关于Rx Swift中队列的使用一共就 是4种队列 ,默认都是 异步执行 ,本身我们序列就是相当于一种队列的形式。对于我们没有指定观察者或者订阅者的调度环境的时候默认就是 主线程异步函数 执行。

    分类:
    iOS