多线程中的超时, 如Socket超时
my $timeout = 5;
for 21,22,80,3306 ->$port {
print "-->$port\r";
#say "\r";
await Promise.anyof(
Promise.in($timeout),
start {
#sleep 6;
my $c = IO::Socket::INET.new(:host<localhost>, :port($port));
say "-->$port [Open]" if so $c;
my $p = $c.recv();
say $p;
},
);
}
anyod里面的线程如果有一个返回 kept时, 就马上返回, 设置超时时间为 $timeout 后, 当第一个 Promise.in($timeout) 时间到达时会返回, 里面的 Socket就不能继续运行了。