並行処理 — スレッドの世界
第4章 No.1 / 1 つから 6 つへ
最近のオペレーティングシステムでは、簡単に スレッド を起動することができる。スレッドとはコンピュータでの処理の単位である。昔の大型コンピュータでは「ジョブ」「プロセス」と呼んだが、概念としては同じものである。最近の PC では多くの処理単位を 並行 に実行させるためスレッドを生成することができる。
JavaScript の場合
JavaScript はシングルスレッドだが、requestAnimationFrame や setInterval、async/await を組み合わせれば、複数の処理が 並行に動くように見える 構造を作れる。Worker を使えば本物の並列処理も可能。
1 つのスレッドが回す
例えば、コンピュータグラフィックスで扱ったワイヤーフレームを使って説明しよう。スレッドがひとつということは、以下のようにワイヤーフレームの回転体をひとつ回転させることである。
Sample 9 — 1 つの回転体JS
6 つを並行に
スレッドを複数生成することにより、回転体を 6 個並行 に実行することができる。
Sample 10 — 並行 6 個JS
表示を調整するため、ダブルバッファを使うと以下のようになる (Canvas は標準でダブルバッファ済み)。
Sample 11 — 並行 6 個 + ダブルバッファJS
このように、最近のコンピュータではスレッドを簡単に多く生成して効率よいプログラムを作ることができる。
ソースコード: samples.js の FreeSoR 部分。