处理线程中任务的类

时间:2011-06-30 12:36:48

标签: iphone objective-c multithreading

我想创建一个类,只要它的一个实例处于活动状态,保持一个线程(工作者)继续,当有人调用它上面的方法时 - performTaskWithData:(NSData*)data - 那么它应该在其中处理这些数据工人线程。
如果在进行操作时发送了其他数据,则应将此新数据/操作排队,直到完成上一次处理。

我需要这个帮助器类的每个实例来保存一个单独的工作线程(即同一个线程应该处理所有处理)。

我该怎么做呢? NSRunLoop?同步对正在传递的数据块的访问?

2 个答案:

答案 0 :(得分:2)

从iOS4开始,Grand Central Dispatch提供了迄今为止最简单,最强大的多线程编程接口。

如果您是注册开发人员,请观看2010年的一些WWDC视频。一开始它很吓人,但它实际上非常简单和好。

答案 1 :(得分:1)

您可以使用NSThreads直接执行此操作并运行循环。但是,我会考虑使用NSOperationQueue s,每个类的一个实例,并将队列的最大并发数设置为1.您的performTaskWithData:只会添加{{1}的子类的新实例到队列就是这样。