我已经使用GCD之前的dispatch_async
用于背景线程工作单元,比如解析来自网络请求(例如JSON或XML)的数据,并且它是WONDERFUL。但是如果我有一个后台任务要运行应用程序的长度呢? dispatch_async
仍然适合这种情况,还是有更好的实施方法?适用于应用程序生命周期任务的GCD dispatch_async?
0
A
回答
3
当然,但创建你自己的调度队列。 (如果你使用一个全球性的队列,你可以占用该队列 - 或它的一个线程 - 永远。)
dispatch_queue_t dispatchQueue = dispatch_queue_create("com.mycompany.myapp.ForeverOperation", DISPATCH_QUEUE_SERIAL);
dispatch_async(dispatchQueue, ^{
// worker routine
});
更传统,你会给这个明确的线索,如果将运行永远,这可能会更“有意义”。但结果基本相同。
NSThread * myWorkerThread = [[NSThread alloc] initWithTarget:...
[myWorkerThread start];
如果您需要与其他线程/队列通信,像往常一样,可能需要标准的同步技术。
1
这真的和dispatch_async
无关,这只是在后台线程中做某事的一种方法。如果您想在后台线程中执行某些操作,请在后台线程中执行此操作!请注意,经常这样做会拖累你的应用程序,因为你只有很多处理时间并且只有很多处理器;你最终可能不得不在Instrument中学习。你可能想把自己的任务分解成几个小块,并且每隔一段时间以短块完成。 GCD和NSOperation都可以提供帮助。
相关问题
- 1. ASP.NET应用程序生命周期 - 非页面生命周期
- 2. iphone应用程序的生命周期?
- 3. Asp.NET Global.asax - 应用程序生命周期
- 4. Tomcat应用程序生命周期
- 5. 服务运行时的应用程序类生命周期
- 6. Android应用程序生命周期和服务
- 7. Android - 应用程序生命周期服务
- 8. 应用程序和本地服务生命周期
- 9. 使用基于Dialog的MFC应用程序应用宽周期性任务
- 10. .Net CF运行线程用于应用程序的生命周期
- 11. dispatch_once每个应用程序的负载或应用程序的生命周期?
- 12. Android后台任务和生命周期
- 13. Windows服务生命周期和责任
- 14. ASP .NET应用程序生命周期+ Singleton实例寿命
- 15. EF代码第一个用于web应用程序的DBContext生命周期
- 16. 用于.NET开发的免费应用程序生命周期管理工具
- 17. 在Android应用程序中使用生命周期方法
- 18. 零iAd请求的应用程序的生命周期
- 19. Openshift应用程序生命周期事件 - 应用程序创建事件?
- 20. 是否有任何iOS 4.0应用程序生命周期的图形描述?
- 21. 应用程序的生命周期:如何管理更新
- 22. Android应用程序生命周期的奇怪行为
- 23. 如何创建具有生命周期的Django应用程序?
- 24. Web应用程序中Hibernate对象的典型生命周期 - ?
- 25. 科尔多瓦应用程序的生命周期
- 26. AsyncTask和应用程序的生命周期?
- 27. 缓存应用程序生命周期的动作结果
- 28. 西纳特拉/ Rails的:应用程序生命周期
- 29. 谷歌应用程序引擎实例的生命周期
- 30. Struts2中应用程序的ValueStack生命周期是什么?
一些家庭作业表明,自定义队列将默认将其目标队列设置为全局默认优先级队列,这意味着提交给自定义队列的工作将在全局默认队列上执行。那么,无论如何我将在全局执行时创建自定义队列有什么优势? – 2013-03-26 20:08:50