La classe parallel\Channel
parallel\Channel
canaux non tamponnés
Un canal non tamponné bloquera les appels à parallel\Channel::send jusqu'à ce qu'il y ait un récepteur, et bloquera les appels à
parallel\Channel::recv jusqu'à ce qu'il y ait un émetteur. Cela signifie qu'un canal non tamponné n'est pas seulement un moyen de partager des données entre les tâches
mais aussi une méthode simple de synchronisation.
Un canal non tamponné est le moyen le plus rapide de partager des données entre les tâches, nécessitant le moins de copie.
canaux tamponnés
Un canal tamponné ne bloquera pas les appels à parallel\Channel::send jusqu'à ce que la capacité soit atteinte, les appels à
parallel\Channel::recv bloqueront jusqu'à ce qu'il y ait des données dans le tampon.
Fermetures sur les canaux
Une fonctionnalité puissante des canaux parallèles est qu'elles permettent l'échange de fermetures entre les tâches (et les runtimes).
Lorsqu'une fermeture est envoyée sur un canal, la fermeture est tamponnée, cela ne change pas le tampon du canal transmettant la fermeture,
mais cela affecte la portée statique à l'intérieur de la fermeture: la même fermeture envoyée à différentes exécutions, ou à la même exécution,
ne partagera pas leur portée statique.
Cela signifie que chaque fois qu'une fermeture est exécutée qui a été transmise par un canal, l'état statique sera tel qu'il était lorsque la fermeture a été tamponnée.
canaux anonymes
La construction de canaux anonymes permet au développeur d'éviter d'attribuer des noms à chaque canal: parallel générera un nom unique pour les canaux anonymes.
&reftitle.classsynopsis;
parallel\Channel
final
parallel\Channel
Constructeur anonymes
Accès
Partage
Fermer
Constantes pour le tamponnement infini
const
Infinite
&reference.parallel.parallel.channel.construct;
&reference.parallel.parallel.channel.make;
&reference.parallel.parallel.channel.open;
&reference.parallel.parallel.channel.recv;
&reference.parallel.parallel.channel.send;
&reference.parallel.parallel.channel.close;