ホームページ > バックエンド開発 > Golang > Net/Http パッケージをインポートするときにデッドロック検出が無効になるのはなぜですか?

Net/Http パッケージをインポートするときにデッドロック検出が無効になるのはなぜですか?

Barbara Streisand
リリース: 2024-10-24 09:42:30
オリジナル
743 人が閲覧しました

Why is Deadlock Detection Disabled When Importing the Net/Http Package?

このコードではデッドロック エラーが返されないのはなぜですか?

提供されたコードは net/http パッケージをインポートし、実行するゴルーチンを初期化します。バックグラウンドポーリング。これにより、デッドロック検出機能が誤って無効になり、予想されるデッドロック エラーが返されなくなります。

この動作を理解するには、コードの抜粋を検討してください。

<code class="go">package main

import (
    "fmt"
    "net/http"
)

func main() {
    var ch = make(chan int)
    ch <- 1
}</code>
ログイン後にコピー

この場合、main 関数はチャネルにアクセスして値を送信すると、デッドロックが発生する可能性があります。ただし、net/http パッケージがインポートされているため、デッドロック検出機能は無効になり、エラーは返されません。

インポートが削除された場合:

<code class="go">package main

import "fmt"

func main() {
    var ch = make(chan int)
    ch <- 1
}</code>
ログイン後にコピー

デッドロック エラーは正しく表示されるようになりました。バックグラウンド ポーリングのゴルーチンがアクティブでないために返されました。

この動作は、GitHub の問題 https://github.com/golang/go/issues/12734 の議論と一致しています。そこでは、インポートがnet/http パッケージはデッドロック検出機能を無効にします。

以上がNet/Http パッケージをインポートするときにデッドロック検出が無効になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート