Maison >développement back-end >Golang >## Pourquoi ma bibliothèque partagée Go C se bloque-t-elle lors des appels réseau dans un processus enfant bifurqué ?
Un programme Go rencontre un blocage lors de l'appel de http.Post() tout en étant construit en tant que bibliothèque partagée C (-buildmode=c-shared). Cependant, le binaire exécutable standard (GOOS=linux GOARCH=amd64 ./example) renvoie la valeur correcte.
Le problème survient parce que le runtime Go est chargé lorsque le C la bibliothèque partagée est chargée par le processus parent. Cependant, lorsque la bibliothèque est utilisée dans un processus enfant forké, le runtime Go n'est pas chargé correctement, ce qui entraîne un comportement imprévisible et des appels suspendus.
La solution consiste à contrôler le chargement du runtime Go au sein de l'enfant processus. Pour ce faire :
En chargeant explicitement le runtime Go dans le processus enfant, il est assuré que le runtime est correctement initialisé et que les appels réseau peuvent être effectués avec succès.
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!