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