非同期I/Oの「非同期」の意味が2つあって、紛らわしくなった背景を書いてみた*1。 Unix では (non)synchronizedと(a)synchronous という用語が使われているが、英語(自然言語)だと紛らわしい*2 (a)synchronous はI/O処理を待つかどうか、(non)synchronized はディスクに書き終わってから折り返すかどうかを意味する 例えば書込みの場合、 synchronized: ディスクに書き終わってから折り返す "non"synchronized: ディスクに書き終わってなくても折り返す synchronous: OSカーネルのバッファに書き終わってから折り返す "a"synchronous: I/Oリクエストを投げたらユーザー空間にデータが残っても折り返す 「非同期I/O」は "a"synchronous I/O の日本語訳なので、I/O