1章非同期プログラミング入門
ソフトウェアエンジニアは絶え間ないハードウェア性能の向上によって長年甘やかされていた。低速のアルゴリズムやありあわせの手法や遅いプログラミング言語を使用することの言い訳として、「計算パワーを注ぎ込めば済む」とか「プログラムを書いている時間は読んでいる時間よりも高価だ」というような決まり文句が使われてきた。しかし昨今では、複数のプロセッサメーカから半導体の進歩が2010年以降停滞していることが報告されている。2022年にNVIDIAのCEO、Jensen Huangが「ムーアの法則は死んだ」と述べて話題になったが、それもこの流れの1つだ。ソフトウェアに対する要求が増大している。特にマイクロサービスなどではシステム内でI/O呼び出しの回数が増大しているので、資源をより効率的に使用しなければならない。
ここで重要になるのが非同期プログラミングだ。非同期プログラミングを用いれば、CPUのコア数を増やさずとも性能を向上させることができる。非同期プログラミングを用いると、サーバからのレスポンスをタスクがただ待っているような時間があるようなら、複数のタスクを1つのスレッドでうまく扱うことができる。
我々の日々の生活は非同期だ。例えば、洗濯を考えてみよう。洗濯機に洗濯物を入れた後、ただ座って何もしないで待っていることはない。その間に何か他のことをする。コンピュータやプログラムを効率的に動作させたければ、非同期プログラミングを受け入れなければならない。
腕まくりして非同期プログラミングの藪に突入する前に、コンピュータの文脈における非同期の位置付けを理解しておく必要がある。本章では、スレッドとプロセスの動作を概説し、I/O操作における非同期プログラミングの効率性を示す。 ...
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