Plusieurs Goroutines peuvent-ils écrire simultanément sur un objet net.Conn ?
Plusieurs Goroutines peuvent émettre des appels d'écriture vers un objet net.Conn simultanément. Cette capacité est explicitement indiquée dans la documentation net.Conn :
Plusieurs goroutines peuvent invoquer des méthodes sur un Conn simultanément.
Verrouillage de l'implémentation en écriture
Dans l'implémentation Unix, la méthode conn.Write acquiert un verrou pour protéger le descripteur de fichier sous-jacent. Ce verrou élimine le risque d'octets partiellement écrits lors de l'émission de plusieurs appels d'écriture.
Implémentation Windows
L'implémentation Windows n'utilise pas de boucle similaire à celle d'Unix. mise en œuvre. Au lieu de cela, il s'appuie sur la fonction WSASend. Le comportement de WSASend garantit que tous les octets sont écrits sans avoir besoin d'un verrou.
Implication pour l'implémentation Unix
Dans l'implémentation Unix, vous ne pouvez vous attendre qu'à des écritures partielles si la fonction sous-jacente (par exemple, écrire) renvoie une erreur. Si aucune erreur ne se produit, tous les octets ont été écrits avec succès.
Boucle équivalente dans WSASend
La fonction WSASend sous Windows offre des garanties similaires à celles de la boucle dans l'implémentation Unix. Il garantit que tous les octets sont écrits avant de rendre le contrôle, éliminant ainsi le besoin d'une boucle séparée.
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!