Maison > Problème commun > le corps du texte

Qu'est-ce que CTX en Golang

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2023-06-09 14:34:08
original
2729 Les gens l'ont consulté

ctx en Golang est l'abréviation de Context, qui est un type dans la bibliothèque standard et est utilisé pour transférer des métadonnées telles que des valeurs spécifiques à la portée de la demande, des signaux d'annulation et des délais entre « goroutines ».

Qu'est-ce que CTX en Golang

Le système d'exploitation de ce tutoriel : système Windows 10, version Go1.20.1, ordinateur Dell G3.

En Golang, ctx est l'abréviation de Context, qui est un type dans la bibliothèque standard. Le type

Context est utilisé pour transmettre des métadonnées telles que des valeurs spécifiques à la portée de la demande, des signaux d'annulation et des délais entre les goroutines. Lors de la création d'une requête, un contexte racine peut être créé et transmis dans la chaîne d'appels tout au long de l'application. Au fur et à mesure que les requêtes se propagent, ce contexte peut être copié par d'autres goroutines et utilisé pour la communication sous-jacente.

Les principales fonctions de ctx sont :

  • Transmission de métadonnées : dans la chaîne d'appel réseau de requête HTTP, certaines informations de métadonnées (telles que le jeton d'autorisation utilisateur) doivent être transmises et utilisées en cours de route. ctx est la méthode préférée pour. mettre en œuvre ce scénario.

  • Expiration et annulation du flux de contrôle : dans les chaînes d'appels imbriquées à plusieurs niveaux, les erreurs doivent souvent traverser chaque couche de chaînes d'appels. Dans certains cas, Goroutine doit même être annulé en même temps. méthode pour résoudre de tels problèmes.

Ce qui suit est un exemple de code simple qui illustre comment utiliser ctx pour contrôler l'annulation et le délai d'attente de goroutine.

func main() {
   ctx, cancel := context.WithCancel(context.Background())
   defer cancel() // 常用结合 defer 安排执行
   go doSomething(ctx)
   time.Sleep(10 * time.Second)
}
func doSomething(ctx context.Context) {
   select {
      case <-time.After(time.Hour):
         fmt.Println("do something")
      case <-ctx.Done():
         fmt.Println("canceled by user:", ctx.Err())
      }
}
Copier après la connexion

Dans l'exemple de code, un contexte est créé à l'aide de `context.WithCancel` et porte la fonction d'annulation (`cancel()`), puis la transmet à la fonction `doSomething`. Dans `doSomething`, 2 des canaux sont surveillés via `select`. Lorsque 10 secondes s'écoulent, la goroutine principale exécute la fonction `cancel`, envoyant ainsi un signal Terminé à `ctx`, ce qui provoque la réception de la goroutine de `doSomething`. ce signal et

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal