Opérations de réception et d'envoi dans le même cas de sélection
Dans Go, l'instruction select permet aux goroutines d'effectuer plusieurs opérations de communication bloquantes simultanément. Lorsque vous utilisez à la fois des opérations de réception et d'envoi dans le même cas de sélection, il est important de comprendre le flux opérationnel.
La documentation Go indique que lors de la saisie de l'instruction select, les opérandes de canal des opérations de réception et les canaux et droit- les expressions côté main des instructions send sont évaluées une fois. Cette évaluation détermine l'ensemble de canaux vers lesquels recevoir ou envoyer et les valeurs d'envoi correspondantes.
Dans l'exemple fourni :
for { select { ... case ch2 <- (<-ch1): ... } }
L'instruction bloquera immédiatement l'opération de réception à partir du ch1. L'instruction select évalue ensuite lequel des cas sélectionnés sera poursuivi. Si le cas ch2 est choisi, l'opération d'envoi sur ch2 aura lieu.
Il est important de noter que si le cas ch2 n'est pas choisi, l'opération de réception de ch1 consommera et supprimera toujours une valeur. Cela a pour effet secondaire d'effacer le tampon pour ch1.
Par conséquent, utiliser les opérations de réception et d'envoi dans le même cas de sélection signifie que l'opération de réception est immédiatement bloquée et l'instruction select détermine quelle opération de communication se déroulera. en fonction des conditions évaluées.
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!