同期I/Oとは
I/OとはIはInputでOはOutputの英語の頭文字を取ったもので、入出力処理のことで、
情報をInput(入力)して、処理結果をOutput(出力)するという流れ
多くのプログラミング言語ではI/O処理の間、プログラムを停止してI/O処理を待ち、このことを
同期I/Oといい、この処理の間、プログラムが停止することをブロッキングという
簡単に言うと今行っている処理が終わっていないなら、次の処理に手を付けないということ
非同期I/Oとは
入出力の開始処理をしてもその終了を待たずに、待ち時間中に別の処理を実行すること
Node.jsは、マルチプロセスやマルチスレッドではなく、シングルスレッドでブロッキングしないで、効率化を図っている
非同期I/Oは処理が1つ終わってから、次の処理を行うことを保証していないので順不同になる性質がある
CPUを効率よく使用することができる
ノンブロッキングI/Oとは少し異なる点があるらしいが、今回は表面だけの理解にしておく
マルチスレッド
一つのコンピュータプログラムを実行する際に、複数の処理の流れを並行して進めること
複数の処理の流れを生み出し、異なる処理を並行して進めることができる
シングルスレッド
JavaScriptもNode.jsもシングルスレッドであり、デッドロックなどを気にしなくていいが、
一度に一つの処理しかできない
プログラムの処理の流れが一本のみである状態、並列処理などは行わず、一つの命令を実行していくこと