Maison  >  Article  >  développement back-end  >  Pourquoi le code avec l'importation Net/HTTP ne déclenche-t-il pas une erreur « Deadlock » malgré une fonction inutilisée ?

Pourquoi le code avec l'importation Net/HTTP ne déclenche-t-il pas une erreur « Deadlock » malgré une fonction inutilisée ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 10:09:02125parcourir

Why Doesn't Code with Net/HTTP Import Trigger

Découvrez pourquoi le code évite l'erreur de « blocage » avec l'importation net/http

Problème d'origine :

Le code fourni inclut une fonction qui importe le package net/http mais n'appelle pas la fonction Extract qui utilise le package importé. Dans ce scénario, le code évite étonnamment une erreur de « blocage », tandis que la suppression de l'importation déclenche l'erreur attendue.

Explication :

En général, l'importation du net/ Le package http initialise les Goroutines d'interrogation en arrière-plan chargées de faciliter la communication HTTP. Ces Goroutines désactivent efficacement le mécanisme de détection de blocage.

Détails techniques :

Lorsque Go détecte une situation de blocage, qui se produit lorsqu'un groupe de Goroutines s'attendent sans progressant, il déclenche une erreur « deadlock ». La présence du package net exécutant des Goroutines en arrière-plan introduit une « bouée de sauvetage » supplémentaire au sein du programme, gardant essentiellement le détecteur de blocage activé même si d'autres Goroutines peuvent être bloqués.

Exemple :

L'exemple de code initialise un canal (ch) et y envoie une valeur (1), mais il ne reçoit pas la valeur en retour. Dans un scénario typique, cela entraînerait une erreur de blocage en raison de l'opération de blocage. Cependant, la présence de Goroutines d'arrière-plan net/http empêche la détection des blocages.

Informations supplémentaires :

Pour plus d'informations, reportez-vous à la discussion connexe sur GitHub : https : //github.com/golang/go/issues/12734.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn