Search in sources :

Example 1 with SpscArrayQueue

use of io.reactivex.internal.queue.SpscArrayQueue in project RxJava by ReactiveX.

the class ParallelRunOn method subscribe.

@Override
public void subscribe(Subscriber<? super T>[] subscribers) {
    if (!validate(subscribers)) {
        return;
    }
    int n = subscribers.length;
    @SuppressWarnings("unchecked") Subscriber<T>[] parents = new Subscriber[n];
    int prefetch = this.prefetch;
    for (int i = 0; i < n; i++) {
        Subscriber<? super T> a = subscribers[i];
        Worker w = scheduler.createWorker();
        SpscArrayQueue<T> q = new SpscArrayQueue<T>(prefetch);
        if (a instanceof ConditionalSubscriber) {
            parents[i] = new RunOnConditionalSubscriber<T>((ConditionalSubscriber<? super T>) a, prefetch, q, w);
        } else {
            parents[i] = new RunOnSubscriber<T>(a, prefetch, q, w);
        }
    }
    source.subscribe(parents);
}
Also used : SpscArrayQueue(io.reactivex.internal.queue.SpscArrayQueue) ConditionalSubscriber(io.reactivex.internal.fuseable.ConditionalSubscriber) ConditionalSubscriber(io.reactivex.internal.fuseable.ConditionalSubscriber) Worker(io.reactivex.Scheduler.Worker)

Aggregations

Worker (io.reactivex.Scheduler.Worker)1 ConditionalSubscriber (io.reactivex.internal.fuseable.ConditionalSubscriber)1 SpscArrayQueue (io.reactivex.internal.queue.SpscArrayQueue)1