Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación concurrente / Canales / Recibir más allá del final

Quiz — Recibir más allá del final

De un canal se han recibido ya todos los valores enviados. ¿Qué ocurre en el .receive siguiente si el canal sigue abierto (nunca se cerró)?

0Lanza X::Channel::ReceiveOnClosed
1Se bloquea, esperando un valor que quizá nunca llegue
0Devuelve Nil
0Devuelve una lista vacía ()

En un canal abierto, .receive no puede saber si viene otro valor de camino, así que espera, potencialmente para siempre, si el productor se ha parado sin cerrar. La excepción X::Channel::ReceiveOnClosed es el caso del canal cerrado: solo un canal cerrado y vacío falla enseguida en lugar de bloquearse.

Recibir más allá del final   |   Reciba un valor