我有一個作爲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 initWithTarget:multicastDaemon selector:@selector(doWorkWithDelegate:) object:self];
[daemonThread start];
我可以發出[daemonThread取消],但daemonThread在他等待時不會檢查isCancelled。我怎樣才能做到這一點?
選擇將解決我的問題。我還沒有取消工作,但我確實已經選擇了工作,並且很快就能取消工作。謝謝! – Adam