出于性能原因,我实例化了一个专用的NSThread来处理从网络服务器流式传输的传入消息。我使用NSOperation来实例化连接并通过NSURLConnection委托接收传入数据,但是一旦新数据进入并被解析,我就将消息处理卸载到专用NSThread。我们的想法是让一个线程专注于接收传入的消息,让其他线程只进行处理。
当applicationDidEnterBackground进入时,关闭NSThread的正确方法是什么?
另外,当applicationWillEnterForeground进来时,我该如何重新启动NSThread?
除主线程外,似乎在进入休眠状态和重新启动之间不会保持其他后台线程的状态。
顺便说一句,我全都是将NSOperations用于大多数具有可测量工作量的任务 - 即通过网络访问资源,执行计算等。但是,在这种情况下,我需要在一个长期存在的专用线程上动态处理消息,该线程始终通过调用performSelector:onThread:withObject:waitUntilDone:并将目标线程传递给它。看起来NSOperation并不适合这个。 我很感激你的意见。
答案 0 :(得分:0)
“出于性能原因”?
maxConcurrentOperations = 1
模拟带有NSOperationQueue的“单线程”。我很确定NSOperationQueue使用线程池(以及4.0,GCD,它可能使用线程池),这意味着你不需要一直保持线程运行。除此之外,您的进程会自动暂停并由系统恢复,因此您无需终止线程。
我不确定“其他后台线程的状态”是什么意思。