iPhone - 同时启动两个进程

发布于 2024-08-11 18:52:49 字数 141 浏览 4 评论 0原文

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

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

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

谢谢。

I have to start more than one processes simultaneously - an AVAudioPlayer's play, a timer and a file write operation.

If I just write them in a method, they are executed one after the other and the start of all the operations has a slight lag.

Any ideas? Appreciate any help.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹梦 2024-08-18 18:52:49

为什么不使用线程呢?

您可以通过使用以下方法轻松完成此操作:

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

或将 NSOperationNSOperationQueue 结合使用。

请查看​​此问题了解更多详细信息。

注意:

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

Why don't you use threads?

You can do it easily by using:

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

or by using NSOperation with a NSOperationQueue.

Have a look at this question for more details.

Notes:

  • you'll need an autorelease pool in your thread if you use any autoreleased classes
  • if you want to use a timer in another thread you'll also need another runloop.
  • watch out for thread safetiness. For instance, I don't know if AVAudioPlayer can be used on a thread different from the main thread.
  • I don't think you can schedule a NSTimer from within a NSOperation
尴尬癌患者 2024-08-18 18:52:49

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

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

Adding too much concurrency could be the wrong approach here. You might want to investigate setting up the timer and playing the audio file on the main thread while performing the blocking file write call on a background thread. The important concept here is to stay away from blocking calls on the main thread, especially when you're dealing with file or network I/O.

You'll want to avoid creating too many extra threads as the iPhone is a single-CPU device, and multiple threads will cause more resource consumption.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文