Maison  >  Article  >  développement back-end  >  Comment l'instruction « select » de Go gère-t-elle les opérations de réception et d'envoi simultanées ?

Comment l'instruction « select » de Go gère-t-elle les opérations de réception et d'envoi simultanées ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 04:34:03868parcourir

How Does Go's `select` Statement Handle Simultaneous Receive and Send Operations?

Canaux de communication via des instructions sélectionnées

Pour transférer les résultats entre les canaux, vous pouvez rencontrer un code comme celui-ci :

for {
    select {
        ...
        case ch2 <- <-ch1:
        ...
    }
}

Cette conception soulève des questions sur la façon dont select fonctionne à la fois sur les opérations de réception et d'envoi.

Réception ou Envoyer ou les deux ?

Contrairement à la sélection de l'une ou l'autre opération individuellement, l'instruction select évalue l'ensemble de l'opération, y compris les opérations de réception (<-ch1) et d'envoi (ch2 <-), lors de la saisie la sélection. Cela signifie que :

case ch2 <- <-ch1:

se bloquera immédiatement à la réception de ch1, puis la sélection déterminera si l'envoi sur ch2 se poursuit ou si un cas différent est choisi.

Essentiellement, le select traite le cas ci-dessus comme :

case ch2 <- <something>:

est évalué lors de la saisie de la sélection.

Effets secondaires

Cette conception entraîne un effet secondaire : si le cas avec la réception imbriquée (<-ch1) n'est pas sélectionné , la valeur de ch1 est toujours consommée et rejeté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!

Déclaration:
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