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

「2値セマフォ」と「計数セマフォ」の違い

スポンサーリンク

予備知識


用語意味
排他制御ダブルブッキングしないようにすること
セマフォ排他制御のための仕組みのひとつで、同時に使える人の数が決まっている物に割り当てられた「あと何人の人が使えるよ」を表した数字

排他制御とセマフォについて、もう少し詳しく説明しておきます。

排他制御は「ダブルブッキングしないようにすること」です。
同時に使われるとマズい(おかしくなる)ものに組み込む仕組みで、1つの物を同時に使わせないための工夫です。


「2値セマフォ」と「計数セマフォ」の違い1

セマフォは「『あと何人の人が使えるよ』を表した数字」です。
ちょっと小難しい言い方をすると

共有資源に対するアクセス可能な数を示す値

です。
資源にアクセスする度にセマフォの値を増減することで、排他制御を実現します。

例えば、そうですね。

ピヨ太君が握手会を開催することにしました。


「2値セマフォ」と「計数セマフォ」の違い2

ピヨ太君には左手と右手があります。
両手を使えば、同時に2人の人と握手できます。

そこで、ピヨ太君のマネージャは「ピヨ太握手可能人数:残り2名」と黒板に書きました。


「2値セマフォ」と「計数セマフォ」の違い3

さてさて、握手会の始まりです。
サクラとして雇われたピヨ子さんが握手をしに来ました。


「2値セマフォ」と「計数セマフォ」の違い4

ピヨ太君はピヨ子さんと握手をしています。
ピヨ太君の片手がピヨ子さんとの握手に使われています。

ピヨ太君は片手のみ空いている状態です。
あと1人の人と握手できます。
ピヨ太君のマネージャは「ピヨ太握手可能人数:残り1名」と黒板の内容を書き換えました。


「2値セマフォ」と「計数セマフォ」の違い5

おっと、また誰か握手をしに来たようです。
今度は、冷やかしでやってきたアクマ君でした。


「2値セマフォ」と「計数セマフォ」の違い6

ピヨ太君は、ピヨ子さんと握手している手とは逆の手で、アクマ君と握手をします。
これでピヨ太君の両手はふさがりました。
ピヨ太君のマネージャは「ピヨ太握手可能人数:残り0名」と黒板の内容を書き換えます。


「2値セマフォ」と「計数セマフォ」の違い7

おっと、またまた誰か握手をしにやってきました。
今度はピヨ太ママがやってきたようです。
ピヨ太君、意外と人気者ですね。


「2値セマフォ」と「計数セマフォ」の違い8

でも、残念。
今は「ピヨ太握手可能人数:残り0名」です。

仕方がないので、ピヨ太ママには待っていてもらいます。


「2値セマフォ」と「計数セマフォ」の違い9

おっと、ピヨ子さんが空気を読んだようです。
ピヨ太ママが待っているのを察して、帰って行きました。


「2値セマフォ」と「計数セマフォ」の違い10

ピヨ子さんが帰ったので、ピヨ太君の片手が空きました。
ピヨ太君のマネージャは「ピヨ太握手可能人数:残り1名」と黒板の内容を書き換えます。


「2値セマフォ」と「計数セマフォ」の違い11

そういえば、ピヨ太ママが待っていましたね。
早速ピヨ太ママが握手をしました。
ピヨ太君のマネージャは「ピヨ太握手可能人数:残り0名」と黒板の内容を書き換えます。


「2値セマフォ」と「計数セマフォ」の違い12

このお話に登場した黒板の内容

ピヨ太握手可能人数:残り○名

がセマフォです。

セマフォは「あと何人使えますよ」を表す数値です。
誰かが使い始めたら、値から「1」引きます。
使い終わったら「1」足します。

セマフォの値が0になったら、そいつはもういっぱいいっぱいです。
それ以上の人数で使うのはダブルブッキングになってしまいます。
そこで、セマフォの値が0の場合は、誰かが使い終わって1以上に戻るのを待ちます。

このような仕組みで排他制御を実現するのがセマフォです。


それぞれの用語の意味


用語意味
2値セマフォ同時に使える人の数が「1」になっていて「0」か「1」の値しか取らないセマフォ
計数セマフォ同時に使える人の数が「2」以上のセマフォ

似ているところ


どちらもセマフォです。
排他制御の話で出てくる仕組みで「あと何人の人が使えるよ」を表した数字です。


違うところ


最大同時アクセス数が違います。

2値セマフォ:最大同時アクセス数「1」
計数セマフォ:最大同時アクセス数「2」以上


です。

セマフォの説明で例に挙げた、ピヨ太君の握手会の様子を思い出してください。

ピヨ太君が片腕を骨折して1人の人としか握手できなくなったのが2値セマフォです。
2値セマフォは

1.握手していない(残り:1名)
2.握手している(残り:0名)


の2つの状態しか取らないセマフォです。


「2値セマフォ」と「計数セマフォ」の違い13

両腕とも無事で2人の人と同時に握手できるのが計数セマフォです。


「2値セマフォ」と「計数セマフォ」の違い14

計数セマフォは「2値セマフォではないセマフォ」とも言えます。


備考


「2値セマフォ」や「計数セマフォ」という呼び名は、便宜上の呼び名です。
「『2値セマフォ』という名前のセマフォがある」というよりは「最大同時アクセス数が『1』のセマフォを『2値セマフォ』と呼ぶことにしよう」です。
同様に「『計数セマフォ』という名前のセマフォがある」というよりは「2値セマフォではないセマフォを『計数セマフォ』と呼ぶことにしよう」です。

2値セマフォは「バイナリセマフォ」とも呼ばれます。
計数セマフォは「カウンティングセマフォ」とも呼ばれます。
個人的には「バイナリセマフォ」や「カウンティングセマフォという言い方の方が馴染みがあります。


スポンサーリンク
書籍画像017
書籍画像079


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性
あたえる人があたえられる