1

私の質問はRuby rxライブラリの最終的なものですが、どの言語の例も喜んで感謝します。 基本的には、すべての操作を既存のイベントループ(またはスレッドプール)にスケジュールすることです。私はこれがスケジューラによって行われなければならないと思う。再帰的な操作をイベントループに送信するスケジューラーの例は見つかりませんでした。これが私が求めている理由です。ここでルビーRXのためのリストです:イベントループまたはスレッドプールを使用したFRPの例

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

なぜイベントループ?イベントループ内で動作するIO操作を追加し、並行性を活用したいからです。このような何か:

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

私はスケジューラでC#のいくつかのものをここに書いています-http://introtorx.com/Content/v1.0.10621.0/15_SchedulingAndThreading.html。 RxRubyにEventLoopSchedulerがないようです。これは、あなたがPRを作成してそれを戻す機会になるかもしれません。 –

+0

それだけでなく、スレッドプールスケジューラも欠落しているようです。それを見て私が思いつくことができるものを見てみましょう。 – ChuckE

関連する問題