1

Мой вопрос в конечном счете для библиотеки ruby ​​rx, хотя любой пример на любом языке был бы с удовольствием оценен. В основном я хочу запланировать каждую операцию для существующего цикла событий (или пула потоков, если на то пошло). Я думаю, это должно быть сделано планировщиком. Я не нашел ни одного примера планировщика, отправляющего рекурсивные операции в цикл событий, и именно поэтому я спрашиваю. Вот список для рубиновых ого:FRP пример с циклом событий или пулом потоков

https://github.com/ReactiveX/RxRuby/tree/master/lib/rx/concurrency

Почему цикл обработки событий? Поскольку я хочу добавить операции ввода-вывода, которые работают внутри цикла событий и используют параллелизм. Что-то вроде этого:

Rx::Observable.from_enumerable(hosts). 
    map { |h| HTTP.connect(h) }. 
    map{|host| host.get("http://myservice/somelist.txt") }. 
    on_next { |html| parse(html).each_line.....} # you get the idea 

ответ

1

Это обычно делается с помощью планировщика, и я бы ожидать, что порт RubyRx включил EventloopScheduler.

Вы можете поставить в очередь/планировщик их на него с ObserveOn оператора

Rx::Observable.from_enumerable(hosts). 
    observeOn(els). # you have declared els somewhere else as an EventLoopScheduler instance 
    map { |h| HTTP.connect(h) }. 
    map{|host| host.get("http://myservice/somelist.txt") }. 
    on_next { |html| parse(html).each_line.....} # you get the idea 

или вы могли бы добавить параллелизм на карте

Rx::Observable.from_enumerable(hosts). 
    observeOn(els). # you have declared els somewhere else as an EventLoopScheduler instance 
    map { |h| HTTP.connect(h) }. 
    flatmap{|host| Rx::Observable.start(host.get("http://myservice/somelist.txt"), els) }. 
    on_next { |html| parse(html).each_line.....} # you get the idea 

Я надеюсь, что код может работать (я C#/JS)

+0

Это точно определение планировщика, которого я пропускаю, так как в примерах, которые я вижу, есть много обратных вызовов, которые мне разрешено перезаписывать (#schedule_relative, #schedule_recu rsive, #schedule_recursive_with_state ...), и это те взаимодействия, с которыми я борюсь, чтобы понять. Знаете ли вы примеры доступных (возможно, в C# или JS)? – ChuckE

+1

Я написал кое-что в Schedulers для C# здесь -http: //introtorx.com/Content/v1.0.10621.0/15_SchedulingAndThreading.html. Похоже, что EventLoopScheduler отсутствует в RxRuby. Это может быть возможностью для вас создать PR и внести свой вклад. –

+0

не только, что, как представляется, отсутствует также планировщик потока. посмотрим на это и посмотрим, что я могу придумать. – ChuckE

 Смежные вопросы

  • Нет связанных вопросов^_^