マルチスレッドGUIモデル 小笠原啓 有限会社ITプランニング ゴール マルチスレッドなGUIライブラリをOCamlで。 動きのあるUIは近頃必須なので、アニメーションを容易にする仕組みを導入。 GUI部品のイベント、見かけを自由にカスタマイズできるように。 Page 2 マルチスレッドとGUI スレッド間情報共有 共有メモリ、メッセージパッシング 描画はマルチスレッド化できない。 副作用は少ないほうがよい。 Page 3 Concurrent Cell CMLスタイルのメッセージパッシングライブラリ(Ocaml) Eventライブラリの上に構築。 スレッドレスな ivar, mvar, mbox(queue)。 GCも考慮したbroadcastチャンネル。 widh_nack, timeout, future, rpcなどの便利関数も実装。 Page 4 Reactive Programming 動き(ビヘイビア. ‘a behavior)を状態の無限リストで表現。動きを宣言的に記述 できる。 状態変化をf : ‘a→’aで記述して、streamにする。 離散的なタイムラインとみなせる。 ビヘイビアは合成可能(コンビネーター)。 over, fusion, insert, replace, loop イベントが起きたときにビヘイビアを変化させるコンビネーター。 react : bool event → (‘a behavior → ’a behavior) →‘a behavior → ’a behavior Page 5 時間 柔軟なGUI部品 従来の部品(Model-View-Control) 内部状態と表示内容とにずれがないよう、保障してくれる代わりに、イベント部 分以外の動作を変更できない。 カスタム部品はゼロから作らなければならない。 新しい設計の部品 イベントの受信と状態判定とロジックを一体化。(インタラクション) 子部品とインタラクションの集まりで一つの部品と定義。 Page 6 デモンストレーション Page 7 Related and Future Work Related Work eXene Fudget(Gadget) FranTk Page 8 Future Work CMLスタイルのメッセージパッシン グをπ計算でエンコーディング。 モデルチェックでデッドロック回避。 Web Site: www.itpl.co.jp Email: [email protected] Page 9
© Copyright 2024 ExpyDoc