>>688
平行性のある現代的なプログラミング言語ではデットロックは言語仕様の問題ではなく、食事する哲学者の問題と
同じく制限された個数のチャネルで送られたデータが受け取られていないのに、送信できるようにはなりません。
これがレース競合を起こさないための標準的で安全な手段であり、グローバル変数や変数共有をgoroutine介して
同期ミューテックスもない操作すれば当然警告が出るでしょう。
そもそもgoroutineでのチャネルブロックはデットロックではなく、待機ブロックです。その証拠にSIGINTなどの
シグナルでは待機ブロックでも抜けるはずです。本来のデットロックなら応答しないかゾンビになります
もちろんスレッド(あるいは軽量スレッド)間でチャネルを介してのみデータを共有できるプログラミング言語も
存在しますが、goは親スコープにある変数などを操作できるように利便性のトレードオフ設計であり、より現実的で
効率的だとも言えるでしょう
また制限された個数でないチャネルの場合は送信に受信側処理速度が追い付かない場合、キューイングされて
無限にメモリーが圧迫される危険性があります。
非同期系の言語で使用されるpromiseや、未来値のプレスホルダーを参照するfutureでデットロックが起きないのは
当たり前です。前者は非同期であり並列/並行ではありません、後者は終了時まで待って値を受け渡すだけです。
fork-joinは何が言いたいのかわかりません、actorプログラミングモデルや純関数言語ならその通りですが
共有したいデータが多くの言語でチャネルやパッシングを介してのみなので競合は起こらないでしょうが
いつまで待っても到着しない受信側は、永遠に待ち続けるのは変わりません。
「そういう事をいってるんじゃない」
ま、こういう問題を一切合切、無難に解決してくれる標準的な手段を手続き言語に求めるのは分からなくも
ないですが、最終的にデットロック(あるいは待機ブロックで無限待ち)したらどうするか記述するような
フォールトトレラント処理が欲しいわけでもないのでしょうが、個数が限られている場合のレース競合対策の
ルールなので言語的ではなく、哲学的にどうにもならないと思いますが
Go language part 4
■ このスレッドは過去ログ倉庫に格納されています
693デフォルトの名無しさん
2021/11/27(土) 20:12:14.69ID:K1RL10E4■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【北区小学校火災】女性教師「電気ストーブ近くで洗濯物を乾かしていた」 失火とみて捜査 燃えた残骸に“繊維片”付着 ★3 [Ailuropoda melanoleuca★]
- 「ケンタッキーは白米と合わない、一緒に食わない」キレる夫に妻がネットで問いかけ反応様々「唐揚げ定食の感覚」「私も出さない」 [muffin★]
- 【W杯】元ブラジル代表ロナウド氏「日本には簡単に勝てる」決勝T1回戦で対戦可能性…避けたいのは「オランダ」 [首都圏の虎★]
- 【速報】北海道・旭川女子高校生殺人 内田梨瑚被告控訴しない方針 懲役27年確定へ [首都圏の虎★]
- 仏南西部で44.3℃ 全土で死者40人、2歳と4歳児も犠牲に 英でも39℃予想 [首都圏の虎★]
- 歌舞伎町の有名ホスト4人 アメリカ入国を拒否され強制送還 「君達の職業では純粋な旅行として認められないから帰れ」と言われる [muffin★]
- 【緊急高市速報】かにぱん🦀製造一時中止 [469534301]
- 玉木「国旗損壊罪に立法的事実無い」民民「予防的立法事実で罰則必要」自民党「ご時世で罰則」 [245325974]
- 【高市疑問】なんか謎の香港の捨て垢増えたと思わん? [419865925]
- 玉木雄一郎に弄ばれて自殺した高橋茉莉(27)、後を追って母親も自殺。高市よりヤバいだろ😰 [485187932]
- 旧清和会が“分裂騒動”《“W西村”が安倍晋三元首相偲ぶ会」で命日開催をめぐって…》安倍が原因で😲 [521921834]
- 東京都北区の小学校火災、女性教員「電気ストーブで洗濯物を乾かしていた」 [377482965]