NSThreadとして実行されているマルチキャスト受信デーモンがあります。受信を待っている間、私は来ないかもしれない別のパケットを待つことなくそれをキャンセルできるようにしたいと思います。待っているだけなので、isCancelledをチェックするために他のコードを実行することはできません。これどうやってするの?スレッドがパケットの受信を待っているときにNSThreadをキャンセルするには?
ここでパケットが入るまで、それが座っていると、最初の行に待って...受信しているコードだも代理人である親、で
/* block waiting to receive a packet */
if ((recv_len = recvfrom(sock, recv_str, MAX_LEN, 0,
(struct sockaddr*)&from_addr, &from_len)) < 0) {
[delegate multicastDaemonDidFinish:self withError:@"recvfrom() failed"];
exit(1);
}
receivedString = [NSString stringWithFormat:@"%s", recv_str];
[delegate multicastDaemonDidReceiveData:self receivedString:receivedString];
、このスレッドがで呼び出されます。
私は[daemonThread cancel]を発行できますが、daemonThreadは待機中にisCancelledをチェックしません。これどうやってするの?
selectは私の問題を解決します。私はまだ仕事をキャンセルしていませんが、私は選択して仕事をしており、まもなく取り消すことができます。ありがとう! – Adam