- 704 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 20:12:14.69 ID:K1RL10E4.net]
- >>688
平行性のある現代的なプログラミング言語ではデットロックは言語仕様の問題ではなく、食事する哲学者の問題と 同じく制限された個数のチャネルで送られたデータが受け取られていないのに、送信できるようにはなりません。 これがレース競合を起こさないための標準的で安全な手段であり、グローバル変数や変数共有をgoroutine介して 同期ミューテックスもない操作すれば当然警告が出るでしょう。 そもそもgoroutineでのチャネルブロックはデットロックではなく、待機ブロックです。その証拠にSIGINTなどの シグナルでは待機ブロックでも抜けるはずです。本来のデットロックなら応答しないかゾンビになります もちろんスレッド(あるいは軽量スレッド)間でチャネルを介してのみデータを共有できるプログラミング言語も 存在しますが、goは親スコープにある変数などを操作できるように利便性のトレードオフ設計であり、より現実
|

|