私はperlを使用しています(うまくいけば何にも影響しないはずです)が、接続操作のタイムアウトを設定する方法を知る必要があります。問題は、接続操作が発生するのを永遠に待つことができないことです。それが数秒以内に起こらなければ、私はむしろあきらめて先に進みたいと思います。
socket(my $sock, PF_INET, SOCK_STREAM, (getprotobyname('tcp'))[2]);
setsockopt($sock, SOL_SOCKET, SO_SNDTIMEO, 10); # send timeout
print "connecting...\n";
connect($sock, sockaddr_in(80,scalar gethostbyname('lossy.host.com')));
print "connected...\n";
問題は、「lossy.host.com」への接続が「不可逆」であるか、遅いか、または高速ではない場合、ユーザーを待たせるよりもあきらめたいということです。(他のことを行うプログラムの副作用と考えてください...ユーザーはおそらく、このスクリプトがどこかのサーバーと通信することを期待していません...)。
スレッドの場合:connect()をどのように中断しますか?スレッドを外して忘れてしまいませんか?