Dans les goroutines, les canaux sans tampon implémentent un mécanisme de blocage pour les récepteurs jusqu'à ce que les données soient disponibles. Cependant, le comportement du blocage en présence de plusieurs récepteurs sur le même canal reste flou.
Lors de l'envoi d'une valeur à un canal avec plusieurs récepteurs, le langage précise que :
Cela signifie que le récepteur qui reçoit finalement les données et débloque est sélectionné au hasard, sans aucun ordre ni préférence spécifique. Cela garantit l'équité tout en éliminant la possibilité de famine pour un récepteur particulier.
La spécification de l'instruction select met en lumière ce comportement :
Dans le cas d'une exécution non tamponnée canaux avec plusieurs récepteurs, la première communication qui deviendra disponible après la sélection aléatoire sera celle qui recevra les données et débloque.
Pour les canaux sans tampon avec plusieurs récepteurs, la livraison des données à un récepteur est aléatoire et non déterministe, garantissant l'équité entre les récepteurs sans aucun ordre ni préférence spécifique.
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!