2011-06-30 53 views
1

我想创建一个类,只要它的一个实例处于活动状态,保持线程(工作)正在进行,并且当某人调用其上的方法时 - 那么它应该处理这些数据在其工作线程中。
如果在操作发生时发送附加数据,则应该将这个新的数据/操作排队,直到完成上一个处理。在线程中处理任务的类

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

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

回答

2

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

如果您是注册开发者,请观看2010年的一些WWDC视频。起初很吓人,但实际上很简单,很好。

+0

与上面相同的问题 - 这是否保证为队列中的每个操作使用相同的线程? – user204884

+1

你不必考虑这一点。你有排队的进程,你可以谈论这些进程。去研究它。 –

1

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

+0

这是保证为每个操作使用相同的线程? – user204884

+0

不,它保证任务按顺序执行,但不一定在同一个线程上执行。确切的线程不再重要。 – JeremyP