iPhone - 同时启动两个进程

时间:2009-11-18 08:28:01

标签: iphone synchronization

我必须同时启动多个进程 - AVAudioPlayer的播放,计时器和文件写入操作。

如果我只是在方法中编写它们,它们会一个接一个地执行,并且所有操作的开始都有轻微的延迟。

有什么想法吗?感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

为什么不使用线程?

您可以使用以下方法轻松完成:

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

或将NSOperationNSOperationQueue一起使用。

有关详细信息,请查看this question

注意:

  • 如果你使用任何自动释放的类
  • ,你的线程中需要一个自动释放池
  • 如果你想在另一个线程中使用一个计时器,你还需要另一个runloop。
  • 注意线程的安全性。例如,我不知道AVAudioPlayer是否可以在与主线程不同的线程上使用。
  • 我认为你不能在NSOperation中安排NSTimer

答案 1 :(得分:1)

添加过多的并发可能是错误的方法。您可能想要调查设置计时器并在主线程上播放音频文件,同时在后台线程上执行阻塞文件写入调用。这里的重要概念是远离主线程上的阻塞调用,尤其是当您处理文件或网络I / O时。

你会想避免创建太多的额外线程,因为iPhone是单CPU设备,多线程会导致更多的资源消耗。