Je pensais à ce qui se passerait si plusieurs goroutines exécutaient select
sur un ensemble de canaux où un/certains d'entre eux sont partagés entre eux et pendant que tous attendent, le canal partagé devient disponible.Sélections simultanées sur le même canal partagé
L'exécution va-t-elle gérer ce cas et permettre à un seul goroutine d'accéder au canal et de lire/écrire?
C'est un peu le point des canaux. Ils ne seraient pas très bons pour la synchronisation si vous ne pouviez pas les utiliser simultanément. – JimB
Les utiliser pour la synchronisation est différent du scénario que j'explique ici. Dans mon scénario, deux goroutines essaient de lire à partir du même canal en même temps, en attendant activement en lançant 'select'. Puis, si ce canal a de nouvelles données, l'exécution ne permettra-t-elle à un seul goroutine de lire ces données? – mahdix
Il n'y a pas de différence. Les canaux sont des primitives de communication et de synchronisation, et tous les départs et les arrivées sont des points de synchronisation. – JimB