Go Language : sélection simultanée sur des canaux tamponnés et non tamponnés
La tâche à accomplir consiste à réaliser une sélection simultanée sur un canal d'envoi tamponné et un canal de réception sans tampon sans consommer constamment les ressources du processeur. Ce scénario équivaut à bloquer jusqu'à ce qu'un canal soit prêt à envoyer sans transmettre aucune donnée.
Pour résoudre ce problème, nous pouvons utiliser une instruction select avec un cas par défaut. Lorsqu'aucun canal n'est prêt, le cas par défaut est déclenché, déclenchant une brève durée de veille. Cela permet de conserver les ressources tout en permettant des tentatives continues d'envoi et de réception de données :
package main
import (
"fmt"
"time"
)
func valueToSend() int {
// Generate a value to send, calculated/acquired each attempt
return 0
}
func main() {
s := make(chanIl faut faire preuve de prudence lorsque l'on se fie aux contrôles de longueur ou de capacité du canal avant d'envoyer ou de recevoir des données. De telles approches peuvent conduire à un comportement inattendu, car l'état du canal peut changer entre la vérification et l'opération d'envoi/réception réelle.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3