12章タスクとスレッドのスケジューリング※1
※1 訳注:12章以降のコードは複雑さを増しており、コード例以外にも変更を加える必要があります。作業は大変ですが、訳者のGitHubリポジトリも参照しながら、ぜひ最後まで根気強く取り組んでください。https://github.com/negibokken/web-browser-engineering-step-by-step
現代のブラウザは、ユーザー入力の処理、リモートファイルの要求、さまざまなコールバックの実行、そして最終的な画面へのレンダリングを、高速性と応答性を保ちながらすべて行わなければいけません。そのためには、ブラウザの保留中の作業を追跡するため、統一されたタスクの抽象化が必要です。さらに、ブラウザでの処理は複数のCPUスレッドに分割し、異なるスレッドで並行にタスクを実行して応答性を最大限に高める必要があります。
12.1 タスクとタスクキュー
これまで、私たちのブラウザが行ってきた作業のほとんどは、スクロール、ボタンの押下、リンクのクリックといったユーザーのアクションに起因するものでした。しかし、ブラウザの実行するWebアプリケーションが高度化するにつれて、リモートサーバーへの問い合わせ、アニメーションの表示、後で使用するための情報のプリフェッチなどを行うようになります。ユーザーの操作は遅く慎重なので、各ユーザー操作の間にブラウザが処理を完了する時間の猶予が十分にあります。一方で、アプリケーションからの要求は非常に厳しい場合があります。そのため、ブラウでWebアプリケーションを実行できるようにするためには考え方を変える必要があります。具体的には、タスクを個別に処理して実行完了まで待つのではなく、ブラウザには実行すべきタスクのキューを持たせ、それを延々と処理させ続けるというものです。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access