背景
std::thread や pthread でスレッド化している C/C++ コードを emcc で WebAssembly でブラウザで動かしたい.
スレッド有効
-s USE_PTHREADS=1
とすると有効になります.
情報
問題点
ただ, 現在の Firefox(2021/07/30 時点)や Chrome だと
SharedArrayBuffer is not defined エラーが出ます.
どうもフラグで有効にしないと使えないっぽい...?
しかも, セキュリティ上の問題により, 制約が強くなります.
SharedArrayBuffer 開発時に使うのが面倒になりそう...?
あと, Safari では SharedArrayBuffer 対応していません.
そもそも WebAssembly の thread はまだ議論中
WebAssembly 自体の(ネイティブ?) thread, まだ仕様として決まっているわけではありませんでした...
現状どうするか?
各種ブラウザに対応させたいなどとなると,
C++ で完結するのは諦めて, JavaScript 側で WebWorker あたりでタスクを建てて処理させるしかなさそうです...