Stockage local par thread dans Go
En Java, le stockage local par thread est un outil utile pour conserver les données associées au courant fil de discussion. Ceci est particulièrement avantageux dans les applications multithread où chaque thread doit accéder à son propre ensemble de données.
Go, un langage de programmation moderne et populaire, n'a pas de classe ThreadLocal intégrée comme Java. Cependant, le runtime Go et les bibliothèques standard ne fournissent pas de stockage local goroutine ni d'identifiant goroutine pouvant être utilisé pour implémenter le stockage local goroutine.
Une solution à ce problème consiste à utiliser le package gls tiers. Ce package fournit un mécanisme de stockage local goroutine basé sur un identifiant unique pour chaque goroutine. Il vous permet d'accéder et de modifier les données associées à la goroutine actuelle.
Cependant, la méthode de stockage des données du package gls est considérée comme non conventionnelle et peut ne pas convenir à tous les cas d'utilisation. Par exemple, un middleware dans un framework Web comme Gin ne peut pas accéder aux données gls d'une goroutine générée par un gestionnaire HTTP.
Comme alternative au stockage local goroutine, l'équipe Go recommande de transmettre explicitement le contexte comme argument de fonction. En fournissant un objet contextuel en tant que paramètre à vos fonctions, vous pouvez transmettre des données arbitraires associées à la requête ou à l'opération en cours.
Par exemple, vous pouvez utiliser le package contextuel pour suivre des statistiques telles que le temps d'accès à la base de données. L'objet contextuel peut être transmis aux goroutines et utilisé pour enregistrer les heures de début et de fin des requêtes de base de données. Cela vous permet de mesurer les performances sans avoir à modifier plusieurs fonctions.
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!