昨日のBoost.勉強会 #10のディスカッションのテーブルの1つにて、イベント処理についてやっていたテーブルのまとめです。
まず、Reactive Extensions (Rx)という非同期やイベント処理に使えるライブラリがあります、.NET用とJavaScript用。
これのC++版を作りたいと前々から思っており、
これが終わったら、Rx for C++を作るんだ……。
— Egtra (ysk-noh) (@egtra) September 18, 2011
せっかくなので、ディスカッションの場に出してみました。出てきた話のうち、主なものはこんなところでした。全部拾えていなくていろいろ漏れています、すみません。
- 単純なObserverパターンならBoost.Signals2があるのだけど(これは私が最初に言った)。
- イベント処理といえば、GUIアプリのメインループ。そこににどう絡めるか。
- チェインするなら、その構造はグラフになるのでは。
- 循環参照になってしまいがちなので、どう対処するか
- 構文は、Boost.Range AdaptorやP-Stade.Ovenみたいに|演算子でチェインする形に。
- Boost.MSMとの類似性。
- 分岐・合流をいかに分かりやすく書けるようにするか。
- (分岐に関連して)Boost.Lambda/Boost.Phoenixとのif_やswitch_など。
分配の話のときに、私はRxのPublishメソッドの例を探していたのですが、これです: neue cc – Reactive ExtensionsとPublishによるシーケンスの分配。
なんの考えもなく始めたので、Rxの説明が不十分だったとは思いましたが、私が考えていなかった方面の関係を指摘されるなどかえって良かったと思いました。
あと、ああいう場だとノートパソコンよりタブレットのほうがやはり便利だと思いました。iPadを持って行けば良かったです。
ちなみに、C++でReactive Extensionsといえば、GoingNative 9: LINQ for C/C++, Native Rx, Meet Aaron Lahman | C9::GoingNative | Channel 9なのですが、そこからソースコード出てこないかなあと思ったものの、未だ出てこないです。
スポンサード リンク |
この記事のカテゴリ
- C++ ⇒ Boost.勉強会 #10 ディスカッションでイベント処理をやっていたグループのまとめ