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

Dan*_* S. 4 macos concurrency multithreading objective-c ios

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

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

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

bor*_*den 5

这是写在线程编程指南内的警告框中

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

因此,真正的区别在于线程编程指南较旧,并且不鼓励在现代 Objective-C 中使用。

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


jus*_*tin 5

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

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

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

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

AudioUnit Hosting Fundamentals也是必读的:http://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/AudioUnitHostingFundamentals/AudioUnitHostingFundamentals.html

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

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