ノンブロッキングソケット
ソケットだよ
ノンブロッキング通信で使うよ
簡単に書くよ
ノンブロッキングソケット(英:non-blocking socket)とは
通信中も他の処理を並行して進められる通信(ノンブロッキング通信)で使う通信用の部品(ソケット)のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・ノンブロッキング
・通信
・ノンブロッキング通信
・ソケット
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ノンブロッキングは「○○(通信とか)している最中も処理は進むけど、○○が終わらないとできない処理になったら中断して待ってるよ~」です。
一般的には「ノンブロッキング○○」という形で登場します。
「(できるだけ)ブロックしない」と言えばイメージできますかね?
ポイントは
1.○○している最中も処理は進む
2.○○が終わらないとできない処理になったら中断して待つ
の2つです。
例えば、そうですね。
ピヨ太君が
1.洗濯
2.掃除
3.アイロンがけ
の3つの家事をやるとします。
まずは洗濯からです。
ピヨ太君は洗濯機に服とかを放り込んで開始ボタンをポチッと押しました。
次は掃除です。
洗濯機が動き出したら、ピヨ太君は部屋の掃除を始めました。
最後はアイロンがけです。
掃除が終わったらアイロンがけ……と思ったのですが、まだ洗濯機は動いています。
アイロンがけは洗濯が終わった後でないとできませんよね。
ピヨ太君は洗濯が終わるのを、ぼーっとしながら待ちました。
洗濯が終わったら、アイロンがけを始めます。
この話におけるピヨ太君のような動きがノンブロッキングです。
1.洗濯している最中も処理(掃除)は進む
2.洗濯が終わらないとできない処理(アイロンがけ)になったら中断して待つ
ですよね。
ノンブロッキングでは処理が枝分かれするイメージです。
通信は「情報を伝えること」です。
とはいえ、普通に「通信」と言えば分かりますよね。
ノンブロッキング通信は「通信と他の処理を並行して進められる通信」です。
通信している最中もプログラムさんは他のお仕事をします。
先ほど、ノンブロッキングの説明をしたときに使った図を思い出してください。
ピヨ太君と洗濯機さんが出てきた図です。
ピヨ太君から洗濯機さんに伝わっている「洗濯を依頼」と洗濯機さんからピヨ太君に伝わっている「完了のお知らせ」が通信だと思ってください。
それぞれ
洗濯を依頼:要求(リクエスト)
完了のお知らせ:応答(レスポンス)
に相当します。
この状態でピヨ太君に注目してください。
ピヨ太君は通信途中でも処理(掃除)を続けていますよね。
そして、通信結果が返って来ないとできない処理(アイロンがけ)になったら、待ち状態に入っています。
このような通信がノンブロッキング通信です。
ソケットは、うんちゃらかんちゃらがげふんげふんです。
ちゃんと見ていくと結構ややこしいので、今回は単純に
通信用の部品
と解釈してください。
プログラムから通信をしたいときは、ソケットさんに対して「これ、送っておいてや~」とお願いするイメージです。
以上を踏まえて
ノンブロッキング通信を使うときに使うソケット
が「ノンブロッキングソケット」です。
ノンブロッキングソケットさんは、通信が終わる前に「送っておくから他のことをやって良いよ」と言ってくれます。
にくい心配りをしてくれるやつですね。
その心配りのお陰で考えないといけないことが増えたりもしますが。
一言でまとめるよ
まぁ「ノンブロッキングソケット」って単語が出てきたら「ノンブロッキング通信をするときに使うソケットなんだな~」と お考えください。
おまけ
■訳してみるよ
「non(ノン)」は否定を意味します。
「blocking(ブロッキング)」は「block(ブロック)」+「ing」です。
「block(ブロック)」の意味は「さえぎる」とか「妨害する」とか「かたまり」とか「まとまり」とか「ブロック」とかです。
「socket(ソケット)」の意味は「受け口」とか「穴」とか「(電球の)ソケット」とかです。
何となく くっつけると
さえぎらない受け口
となります。






