receive-from-channels

Ein Aufruf der Funktion receive-from-channels versucht, aus den übergebenen Kanälen eine Nachricht zu lesen. Dabei wird zuerst die Liste der Kanäle vom Anfang bis zum Ende nach vorhandenen Nachrichten durchsucht. Die erste gefundene Nachricht wird geliefert. Wenn keine Nachricht vorhanden ist, dann wird bis zum Ablauf der Wartezeit auf allen Kanälen auf eine eintreffende Nachricht gewartet.

Die Funktion erwartet zwei Argumente: eine Liste von Kanälen (siehe Kanal) und eine nicht negative Ganzzahl für die maximale Wartezeit in Millisekunden. Die Wartezeit wird angewendet, wenn von keinem der Kanäle eine Nachricht gelesen werden kann.

Wenn alle übergebenen Kanäle geschlossen sind, oder die Wartezeit abläuft, ist das Ergebnis des Aufrufs nil.


> (let ((channel (make-channel 0)))
    (list
      (send-on-channel channel "hallo" 10)
      (receive-from-channels (list channel) 10)))
("hallo" "hallo")

> (receive-from-channels (list (make-channel 0)) 1000)
nil