「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

ノンブロッキングI/O

pointこの用語のポイント

point入出力処理のやり方、もしくは入出力処理用の部品だよ

point入出力中も並行して他の処理が進むよ

point「I/O」の部分は「Input/Output」の略だよ

スポンサーリンク

簡単に書くよ

ノンブロッキングI/O(読:ノンブロッキングアイオー 英:non-blocking I/O)とは

入出力をやっている最中も他の処理を並行して進められるI/O(入出力処理、入出力処理をする部品)のこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「ノンブロッキング」と「I/O」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

ノンブロッキングは「○○通信とか)している最中も処理は進むけど、○○が終わらないとできない処理になったら中断して待ってるよ~」です。
一般的には「ノンブロッキング○○」という形で登場します。
(できるだけ)ブロックしない」と言えばイメージできますかね?

ノンブロッキングI/O

ポイントは

1.○○している最中も処理は進む
2.○○が終わらないとできない処理になったら中断して待つ


の2つです。

例えば、そうですね。

ピヨ太君が

1.洗濯
2.掃除
3.アイロンがけ


の3つの家事をやるとします。

まずは洗濯からです。
ピヨ太君は洗濯機に服とかを放り込んで開始ボタンをポチッと押しました。

ノンブロッキングI/O2

次は掃除です。
洗濯機が動き出したら、ピヨ太君は部屋の掃除を始めました。

ノンブロッキングI/O3

最後はアイロンがけです。
掃除が終わったらアイロンがけ……と思ったのですが、まだ洗濯機は動いています。

アイロンがけは洗濯が終わった後でないとできませんよね。
ピヨ太君は洗濯が終わるのを、ぼーっとしながら待ちました。

ノンブロッキングI/O4

洗濯が終わったら、アイロンがけを始めます。

ノンブロッキングI/O5

この話におけるピヨ太君のような動きがノンブロッキングです。

1.洗濯している最中も処理掃除は進む
2.洗濯が終わらないとできない処理アイロンがけになったら中断して待つ


ですよね。
ノンブロッキングでは処理が枝分かれするイメージです。

ノンブロッキングI/O6

I/Oは「入力」と「出力」を一緒くたにした表現です。
「入出力」を意味します。
「入力」を意味する「Input(インプット)」の頭文字「I」と「出力」を意味する「Output(アウトプット)」の頭文字「O」をくっつけて「I/O」です。

ノンブロッキングI/O7

ただし、場合によっては

入出力するための部品

を意図していることもあります。

例えば、ファイルデータ書き込む処理は「プログラムからファイルにデータを出力する」と解釈できますよね。

ノンブロッキングI/O8

同じように、ファイルからデータを読み込む処理は「ファイルからプログラムにデータを入力する」と解釈できます。

ノンブロッキングI/O9

「ファイルにデータを読み書きする処理」を指して「ファイルI/O」と表現したりします。
または「ファイルにデータを読み書きするプログラムの部品」を指して「ファイルI/O」と表現している場合も あります。
「処理」と「部品」の どちらを意図しているかは文脈から判断してください。

以上を踏まえて、ベテラン主婦のように

入出力と他の処理を並行して進められるI/O

が「ノンブロッキングI/O」です。
入出力している最中もプログラムさんは他のお仕事をやれます。

ノンブロッキングI/O10

先ほど、ノンブロッキングの説明をしたときに使った図を思い出してください。
ピヨ太君と洗濯機さんが出てきた図です。

ノンブロッキングI/O11

ピヨ太君から洗濯機さんに伝わっている「洗濯を依頼」が入出力の開始だと思ってください。
同じように、洗濯機さんからピヨ太君に伝わっている「完了のお知らせ」が入出力の終了だと思ってください。

ノンブロッキングI/O12

この状態でピヨ太君に注目してください。
ピヨ太君は入出力の途中でも処理(掃除)を続けていますよね。

ノンブロッキングI/O13

このようなI/OがノンブロッキングI/Oです。


image piyo2

一言でまとめるよ

まぁ「ノンブロッキングI/O」って単語が出てきたら「入出力中も並行して他の処理が進むI/O(入出力処理、入出力処理用の部品)なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像075
書籍画像011

おまけ

■訳してみるよ

「non(ノン)」は否定を意味します。
「blocking(ブロッキング)」は「block(ブロック)」+「ing」です。
「block(ブロック)」の意味は「さえぎる」とか「妨害する」とか「かたまり」とか「まとまり」とか「ブロック」とかです。
「I」は「input(インプット)」の略です。
「input(インプット)」の意味は「入力」とかです。
「O」は「output(アウトプット)」の略です。
「output(アウトプット)」の意味は「出力」とかです。
何となく くっつけると

さえぎらない入力/出力

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
実務で役立つ バックアップの教科書 基本の考え方からツール活用・差分管理・世代管理・データ保全・リストア・リカバリー・可用性の確保まで
エンジニアのための生成AI入門 はじめての生成AIアプリ開発からエージェント開発まで