第7章3 体育大会の同期処理クリティカルセッション
さて秋になるやいなや、体育大会とかいう行事が待っている。
中学の時は体育祭だったが、この高校では体育大会だ。
何が違うかと言われると分からないけど。
とはいっても工業高校ではほとんど練習がない。例外を除いては。
その例外の一つが二人三脚であった。
「いひひ、マナちゃんと二人三脚」
「そんなにうれしいか?」
「だって今まで男女別だったじゃん。でもこの学校、男女比がいびつなせいで男女混合だから」
「なるほど、そういうことか」
男女比が一定でない工業高校では、時代の最先端なのかどうか不明ながら、男女で分かれていないのだ。
いや、体育って普通、身体的な問題で男女別なので、これは男女平等とはほど遠いのか。
複雑な理由だが、それで俺はハルとペアで二人三脚競争に出ることになったというわけだ。
それで二人三脚は本番一発というわけにいかない代表競技なので、体育の時間まで使って練習が行われる。
「いち、に、いち、に」
「へっちゃらへー」
「いち、に、いち、に」
「うんしょ、うんしょ」
俺が一生懸命声掛けをしている横で、へんな相槌を打つうちのハルさん。
完全に顔は笑顔である。
というか、ハルは足が速いので、これ、俺のペースに完全に合わせているってことなんだな。
そういう器用なことが、この人はできるらしい。
「こうマルチスレッドみたいなんだよな」
「なにそれ」
「チューリングマシンって知ってるか?」
「うん。最初のほうの授業でやったよ」
「だよな」
チューリングマシンというのはコンピューターの原型機の概念で、無限のテープを読み込んで解釈して、このテープ上で左右にヘッドが動くという機械だ。
ところがマルチスレッドはちょっとこの普通のチューリングマシンの範疇を超える。
複数のテープとヘッドがあり、それぞれ動くというようなイメージになるのだ。
機械が複数あるといえば、単純ではある。
しかし完全に独立していなくて、共有メモリーという領域があり、それぞれのスレッドは同期する必要があるのが普通だ。
そこには排他制御といった、同時に同じ値を足したり引いたりしようとするとおかしくなるのを防ぐ機能がある。
多くのプログラミング言語では、排他制御は完全自動ではなく、プログラマの責任で行われるため、専門の知識が必要なのだ。
それで俺とハルがそれぞれ勝手に動くプログラム=スレッドで、足を縛っている紐で同期する必要があるということだった。
「えへへ、私たち、同期してる!」
「なんかハルが言うとエロい気がする」
「もう、なにそれっ、なんで私だけ」
「もういい、喋らんでいい」
「うぐう」
CPUはムーアの法則と言われる倍々の勢いで進化してきたのだが、これには原子核の大きさレベルに迫ってきた現代になってくると進化の限界が見えてきた。
それを突破する方法の一つがマルチスレッドで、同時に二つ以上動かせば倍になるという単純な話ではないものの、それに近い性能を出せることがある。
今では十スレッド以上並列で動かせるマシンも普通にある。
ところが同期、排他制御、共有メモリーなどがプログラムを複雑にして、それを開発できる人も限られるとなると、なかなか難しいというのが現代だろうか。
そして最先端で使われているのがGPUの応用技術でNPUもその一つだった。
ここにさらにGPUを上回る、量子コンピューターが登場しつつあるので、普通のプログラマは頭が痛い。
俺たちは練習しまくって、うまく同期できるように頑張った。
さて、問題はこいつらである。
「おい、カイ」
「なんだ、トウマ」
「何か言うことがあるだろ」
「俺に合わせろ」
「お前が俺に合わせてくれ」
ナカチュウことカイとトウマ。
仲いいからお前ら男子だけどペアな、とくっつけられた二人だったが、なぜか二人三脚では馬が合わず、大苦戦している。
こいつらには同期するという概念がないらしく、なかなか足が揃わないのだ。
「まるでデッドロックだな」
「なんだよ、もう」
デッドロックというのは、お互いが排他制御をして相手のリソースを要求した状態で停止してしまう現象をいう。
もうちょっと分かりやすく説明してみよう。
ここに一組のナイフとフォークがあり、国産牛ステーキを食べようとしているとする。
カイはナイフを手に取った。
その間にトウマはフォークを取る。
カイはフォークを取ることを要求し、トウマはナイフを要求するが、お互いがすでに手に持っているので、使うことができず、二人ともステーキにありつけない。
どちらかが諦めてくれればいいが、それはエラーになることを意味する。
コンピューターではこの待機時間が決められている場合もあるが、簡易的な制御では、半永久的に待機する実装も多い。
そうなると「永遠にお待ちください」というやつで、人間が介入して停止させて一度エラーにして処理する必要があるんだ。
解決策の一つとしては、必ずナイフから取るように取り決めをする、といった方法もある。
ただし、プログラムというのは時に複雑で、そう簡単にロックの順番を決められないことがあるのだ。
それでロックの状態が死んでいるので、デッドロックという。
アンデッドのデッドと一緒。
ちなみに原因には他にも、ジャンケンの三すくみのようなものをいう、循環参照というのもある。
「おい、ナカチュウ、足の動きを同期させるんだよ」
「マナカに言われてもな」
「そーだそーだ。そっちは十年近く同期してるだろうが」
「まあ、確かに」
今度は俺とハルがその十年同期を想像して赤くなる。
小二からだから十歳からか、あれ、まだ八年くらいじゃね。似たようなものではある。
同期といってもやましい行為はしていないのだが。
息を合わせて一緒に動くという意味が、なんとなく意味深で、つい変なことを考えてしまう。
いかんな。顔洗ってくるか。
あぁ水が冷たい。気持ちいい。
体育大会当日。
今日も晴れて快晴が広がっている。
こういう運がいいのは、だいたいハルの強運のおかげだと思う。
もともと晴れの日が多い地域とはいえ、こういう日に限って晴れるんだから。
今日は体操服がまぶしい女子たちをちょろっと眺めながら、もう一度、空を見上げる。
「フレーフレー紅組」
「ふれふれ、白組、ふれふれ、白組」
俺たちJ1は紅組だ。どちらも僅差で得点を奪い合っている。
工業高校ではあまり体育大会は盛り上がらず、簡単なお祭りとして消化することも多いのだけど、とある理由から今年、俺たちのクラスは特に盛り上がっている。
ついに俺たちの番になり、ハルとスタートラインに並ぶ。
「いちについて、よーい。ドン」
ピストルの合図で二人一斉に走り始める。
出だしの足も揃い、一緒にスピードを上げていく。
「いち、に、いち、に」
「はぁはぁはぁはぁ……」
俺の掛け声に合わせて、ハルも走る。
ハルは前の競技で短距離走をソロで走り、ぶっちぎりの一位を取っていた。
ただしその余波で、じゃっかん今疲れ気味のようだった。
「いち、に、いち、に」
俺は声を掛けてやりたいが、これ以外のことを言うことができないでいた。
ハルは分かっているという意味なのか、ニッと笑って見せた。
まだ余裕なのだろうか。
そのまま俺たちはライバルたちを蹴散らし、一位を決めることができた。
「うおおおお」
「やったああ、ないすぅ、マナハルコンビ」
担任の森河先生もガッツボーズで迎えてくれる。
そうなのだ。優勝したら全員、缶ジュースおごりと森河先生が言い出した、というのが大きな理由で、今の状況にある。
今はまだ僅差、気を抜けなかった。
そこに俺たちの勝利で、この盛り上がりである。
「勝ったね」
「おう。完全な同期マルチスレッドだったな」
「だよね」
「ついでに排他制御もばっちり覚えたし、よかったよかった」
「ふふふ」
ちなみに排他制御がうまくできなくておかしくなるのを不整合と言ったりする。
まあなんにせよ、俺たちは勝ったのだ。
そして一方のナカチュウはというと……。
「お前がナイフよこせよ」
「いいや、お前こそフォークをくれ」
終始こんな感じで、ぶっちぎりの最下位だったという。
俺たちと合わせてプラマイゼロであった。
午後一番。
ハル率いるチアリーディング。
女子がせっかく十人もいるんだから、という理由で女子自らチアをやりたいと先生たちを説得したらしい。
チアリーダーの格好をして、応援を披露する女子たち。
白のシャツとピンクミニスカの揃いの服は青春って感じがする。
生足を高く上げ、フレフレと応援してくれる。
ピンク色の派手なミニスカートが揺れに揺れ、太ももがチラチラと見える。
俺たちはガン見である。
こういうの人生で経験できると思わなくて、ちょっと感激。
このために最近、夕方遅くまで女子たちが残って練習を積み重ねているのを知っている身としては、涙腺にくるものがある。
大玉転がし、玉入れ、そしてパン食い競争などをへて合計点が決まる。
「今年の優勝は――紅組です」
アナウンサー役の女子の放送で優勝が告げられる。
「うおぉおおしゅ」
「やったあーー」
歓声がどこからともなく上がる。
俺たちのクラスの缶ジュースが約束された瞬間であった。
俺は缶コーヒーにした。ミルク味のちょっと大きいやつ。
あれ好きなんだよ。
「マナちゃん、一緒に飲も」
「おおう。でもお前、いつもは紅茶派じゃん?」
「今日はマナちゃんと同期した記念日だから、たまには一緒の缶コーヒーにしようと思って」
「そうかそうか」
二人で同じアイスの甘い缶コーヒーをすする。
一緒の缶コーヒーね、ふむ。
なんだか、その心遣いが妙にうれしくて、ちくちくする。
俺の心のファイアウォールを突破され、致命的エラーの緊急メールが飛んできそうだ。
まあ、たまにはそういう日があってもいいかもしれない。




