このコードではデッドロック エラーが返されないのはなぜですか?
提供されたコードは net/http パッケージをインポートし、実行するゴルーチンを初期化します。バックグラウンドポーリング。これにより、デッドロック検出機能が誤って無効になり、予想されるデッドロック エラーが返されなくなります。
この動作を理解するには、コードの抜粋を検討してください。
<code class="go">package main import ( "fmt" "net/http" ) func main() { var ch = make(chan int) ch <p>この場合、main 関数はチャネルにアクセスして値を送信すると、デッドロックが発生する可能性があります。ただし、net/http パッケージがインポートされているため、デッドロック検出機能は無効になり、エラーは返されません。</p> <p>インポートが削除された場合:</p> <pre class="brush:php;toolbar:false"><code class="go">package main import "fmt" func main() { var ch = make(chan int) ch <p>デッドロック エラーは正しく表示されるようになりました。バックグラウンド ポーリングのゴルーチンがアクティブでないために返されました。</p> <p>この動作は、GitHub の問題 https://github.com/golang/go/issues/12734 の議論と一致しています。そこでは、インポートがnet/http パッケージはデッドロック検出機能を無効にします。</p></code>
以上がNet/Http パッケージをインポートするときにデッドロック検出が無効になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。