在 Cocoa 中,我设置了两个 NSThread,一个生产者和一个消费者。生产者将数据附加到 NSMutableData,接收者从该数据打开 NSInputStream 并分块读取。

生产者线程的写入速度比消费者进程快很多,这是可以的。但生产者只生产有限数量的工作,然后退出。我希望消费者线程能够处理 NSStreamEventEndEncountered 事件。当 NSInputStream 来自 NSMutableData 时,我如何发出信号?

我应该让生产者发送一系列带有表示流结束的神奇数字的字节吗?

有帮助吗?

解决方案

生产者将数据附加到 NSMutableData,接收者从该数据打开 NSInputStream 并分块读取。

那是行不通的。从 -initWithData: 文档:

的内容 data 被复制。

这意味着,它将复制当时数据对象中的所有内容,而不是在向其中添加更多数据时遵循数据对象的内容。

(同样适用于 +inputStreamWithData:.)

尝试一下 管道 反而。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top