CAPモデルとworkerの仕様の齟齬w
ブラウザ上でCAPモデルを使うとするじゃん?
シングルタスクで動かすわけないから、workerを使ってマルチスレッド化するじゃん?
CAPモデルでは
- (C)コンダクター ⇆ (A)アクター
- (C)コンダクター ⇆ (P)パフォーマー
の通信を行うんだから、コンダクターが親になってアクターとパフォーマーを(workerとして)生成するのが自然じゃん?
コンダクターが配下のスレッド( = worker)を全て把握するんだから。
なのに、ブラウザエンジンの仕様見てると、マスタースレッドしかDOMを扱えないとなってる orz
webassembly が動くメジャーなブラウザ全てでww
必然的に(直接表示を行う)パフォーマーがマスタースレッドとなる。
パフォーマーがコンダクターを別スレッドで起動して、コンダクターがその他のアクターを起動する形になりそう。
つまり、「パフォーマー ⇆ コンダクター」の通信と、「コンダクター ⇆ アクター」の通信は、別物になるってことだ。
さらに言えば、メインスレッドでしかUI/UX系のイベントが受け取れないんだから、パフォーマーが入力受け付け機能を持つしか無いじゃん?
……ツラたん。