如何在iOS中的线程之间传输数据?

Lop*_*per 8 java iphone objective-c ios

在Java中,线程安全PipedInputStreamPipedOutputStream类可用于将数据从一个线程传输到另一个线程.在iOS中它的等价物是什么?

如果我错了,请纠正我,但我的理解是,NSPipeCocoa仅用于进程之间的数据传输,而不是线程之间的数据传输.另外,由于它为此使用了一些本地目录,我假设某些临时文件用于此类传输.总结一下,

  1. 假设使用了Operation Queues,我可以在Cocoa中使用哪个类来将二进制数据从一个线程传输到另一个线程而无需编写自己的同步并且不使用临时文件?
  2. 如果没有,那么优雅的选择是什么?

Per*_*ion 4

与使用 fork 创建的 POSIX 线程不同,Java 线程是轻量级的并且共享相同的地址空间。Java 中不需要 C 风格的 IPC,并且 PipedInputStream/PipedOutputStream 绝对不是为此目的而创建的。Objective-C 线程基于 POSIX 构建,但它们都共享相同的虚拟内存空间,因此您通常也不会在 ObjC 中执行任何 IPC。

如果您希望在 Objective C 中的线程之间“共享”数据,只需将其写入适当的变量,并在必要时在线程之间发送一个信号,表明数据可供使用。做到这一点的最佳方法是使用条件。

如果您打算在 Obj C 中执行任何重要的线程工作,那么我强烈建议您阅读Apple 的线程安全指南