Heim > Backend-Entwicklung > Golang > Warum ist die Deadlock-Erkennung beim Importieren des Net/Http-Pakets deaktiviert?

Warum ist die Deadlock-Erkennung beim Importieren des Net/Http-Pakets deaktiviert?

Barbara Streisand
Freigeben: 2024-10-24 09:42:30
Original
727 Leute haben es durchsucht

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

Warum wird in diesem Code kein Deadlock-Fehler zurückgegeben?

Der bereitgestellte Code importiert das Net/http-Paket, das ausgeführte Goroutinen initialisiert Hintergrundabfrage. Dadurch wird versehentlich der Deadlock-Detektor deaktiviert und verhindert, dass der erwartete Deadlock-Fehler zurückgegeben wird.

Um dieses Verhalten zu verstehen, betrachten Sie den Codeauszug:

<code class="go">package main

import (
    "fmt"
    "net/http"
)

func main() {
    var ch = make(chan int)
    ch <- 1
}</code>
Nach dem Login kopieren

In diesem Fall erstellt die Hauptfunktion eine Kanal und sendet einen Wert hinein, was möglicherweise einen Deadlock verursacht. Da jedoch das net/http-Paket importiert wurde, ist der Deadlock-Detektor deaktiviert und es wird kein Fehler zurückgegeben.

Wenn der Import entfernt wird:

<code class="go">package main

import "fmt"

func main() {
    var ch = make(chan int)
    ch <- 1
}</code>
Nach dem Login kopieren

Der Deadlock-Fehler ist jetzt korrekt zurückgegeben, weil die Hintergrundabfrage-Goroutinen nicht aktiv sind.

Dieses Verhalten steht im Einklang mit der Diskussion im GitHub-Problem: https://github.com/golang/go/issues/12734, wo das Importieren erläutert wird Das Paket net/http deaktiviert den Deadlock-Detektor.

Das obige ist der detaillierte Inhalt vonWarum ist die Deadlock-Erkennung beim Importieren des Net/Http-Pakets deaktiviert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage