Thread (スレッド)

複数のタスクやプログラムを同時に実行することができる能力を持った最近のコンピューターやオペレーティングシステムでは、それぞれのコードを実行できる機能の単位はスレッドと呼ばれています。メインスレッドはそのうちの一つで、ブラウザーがユーザーイベントを扱い、画面に表示や描画を行い、通常のウェブページやアプリを構成するコードの大部分を実行します。これらのものがすべて一つのスレッドで行われるため、速度の遅いウェブサイトやアプリのスクリプトがブラウザー全体の速度を落とします。さらに悪いことに、サイトやアプリのスクリプトが無限ループに入ると、ブラウザー全体がハングアップすることがあります。これは使い勝手がのろく (または悪く) 失望させるものになります。

しかし、最近の JavaScript は追加のスレッドを生成する方法を提供しており、それぞれが独立して実行され互いに通信することができます。これは Web worker のような技術で実現されており、独自のスレッドでメインスレッドと同時に実行されるサブプログラムを分岐させるために使用することができます。これによって遅いタスク、複雑なタスク、実行に時間がかかるタスクをメインスレッドから独立して実行し、サイトやアプリの全体的な性能を、ひいてはブラウザー全体の性能を保護します。これで最近のマルチコアプロセッサーの利点を活用することもできます。

service worker と呼ばれる特殊な種類の Worker —ユーザーの許可により—サイトの背後に隠れてユーザーがサイトを使用していないときにも実行されるものを作成することもできます。これにより、サイトを頻繁に操作していない間に何かが起こった時、ユーザーに通知することができるサイトを作成するために使用することができ、例えばメールサービスにログインしていない状態でも新しいメールが届いたことをユーザーに通知したりすることができます。