对于iOS,“并发编程指南”和“线程编程指南”有什么区别?

时间:2013-07-16 09:51:16

标签: ios objective-c multithreading macos concurrency

我的问题背后的原因是我正在为iPhone编写音频单元托管应用程序,我需要同步音频线程(写入内存)和GUI线程(从内存中读取)的内存访问。

在寻找有关该主题的指南时,我发现苹果为iOS中的并行编程提供了两个指南(类似的指南适用于OS X):

关于iOS,我是并行编程的新手;因此,我不清楚我需要阅读哪些指南,或者它们是否涉及相同的事项。

2 个答案:

答案 0 :(得分:5)

并发编程指南将是您在调度API(又名GCD)和NSOperation中的速成课程。

线程编程指南将向您介绍线程,互斥和同步API和技术。它们还将涵盖线程的创建以及与Run Loops的交互。

对于您所述的问题,线程编程指南中的信息将更有用。

然而,这些指南提供的大部分内容都是阻止可行的心态。在实时音频中,它不行。

AudioUnit托管基础知识也是必读内容:http://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/AudioUnitHostingFundamentals/AudioUnitHostingFundamentals.html

如果要为UI设置动画,则可能需要实现/查找循环缓冲区实现。

注意 - 如果您不熟悉并发设计,实时并发将成为一个棘手的主题。

答案 1 :(得分:4)

这是在“线程编程指南”

中的警告框中写的
  

重要提示:如果您正在开发新应用程序,建议您研究用于实现并发的替代OS X技术。如果您还不熟悉实现线程应用程序所需的设计技术,则尤其如此。这些替代技术简化了实现并发执行路径所需的工作量,并提供了比传统线程更好的性能。有关这些技术的信息,请参阅“并发编程指南”。

所以,真正不同的是,线程编程指南较旧,不鼓励在现代Objective-C中使用。

HOWEVER ,如评论中所述,对于需要极低延迟的操作(如实时音频编辑),不适合NSOperationGCD