September 2017
Beginner
402 pages
9h 52m
English
As we have seen in the previous section, the receive method of the Channel class stalls if there is no data in the channel.
The poll method also reads from the channel but does not block the execution of the program. If there is nothing to read, then it returns an empty value immediately. Let us modify the last example a little bit more and read from the channel five times with a 1-second delay between the poll calls:
my $channel = Channel.new();start { sleep 3; $channel.send(42);};for 1..5 { my $value = $channel.poll; say $value; sleep 1;}
This programs prints the following output:
(Any)(Any)(Any)42(Any)
The first three attempts could not get any values because nothing is sent to the $channel, as there is a 3-second ...