いっせいの!!細かなつぶやき

細かなことをぽつぽつと呟いてます

CAPモデルとworkerの仕様の齟齬w

ブラウザ上でCAPモデルを使うとするじゃん?
シングルタスクで動かすわけないから、workerを使ってマルチスレッド化するじゃん?
CAPモデルでは

  • (C)コンダクター ⇆ (A)アクター
  • (C)コンダクター ⇆ (P)パフォーマー

の通信を行うんだから、コンダクターが親になってアクターとパフォーマーを(workerとして)生成するのが自然じゃん?
コンダクターが配下のスレッド( = worker)を全て把握するんだから。


なのに、ブラウザエンジンの仕様見てると、マスタースレッドしかDOMを扱えないとなってる orz
webassembly が動くメジャーなブラウザ全てでww


必然的に(直接表示を行う)パフォーマーがマスタースレッドとなる。
パフォーマーがコンダクターを別スレッドで起動して、コンダクターがその他のアクターを起動する形になりそう。
つまり、「パフォーマー ⇆ コンダクター」の通信と、「コンダクター ⇆ アクター」の通信は、別物になるってことだ。


さらに言えば、メインスレッドでしかUI/UX系のイベントが受け取れないんだから、パフォーマーが入力受け付け機能を持つしか無いじゃん?


……ツラたん。