多线程中的超时, 如Socket超时

Posted FireC@t @ Perl6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程中的超时, 如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就不能继续运行了。

 

以上是关于多线程中的超时, 如Socket超时的主要内容,如果未能解决你的问题,请参考以下文章

C# socket超时释放端口

多线程设置线程超时思路

如何处理 QTcpServer 中的 TLS 握手超时?

内存泄漏在哪里? python - 如何在python中的多处理期间使线程超时?

学习Swoole需要掌握哪些基础知识

如何为 MFC 线程设置超时