У меня есть демон многоадресного приема, который работает как NSThread.Пока он ожидает получения, я хотел бы иметь возможность отменить его, не ожидая другого пакета, который может не прийти.Поскольку он просто ждет, я не могу выполнить другой код для проверки isCancelled.Как я могу это сделать?
Вот код, который получает .. Он сидит и ждет в первой строке, пока не поступит пакет.
/* 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 initWithTarget:multicastDaemon selector:@selector(doWorkWithDelegate:) object:self];
[daemonThread start];
Я могу выдать [daemonThread cancel], но daemonThread никогда не будет проверять isCancelled, пока он ждет.Как я могу это сделать?