如何在从 NSMutableData 读取的 NSInputStream 上发出 NSStreamEventEndEncountered 信号
-
13-09-2019 - |
题
在 Cocoa 中,我设置了两个 NSThread,一个生产者和一个消费者。生产者将数据附加到 NSMutableData,接收者从该数据打开 NSInputStream 并分块读取。
生产者线程的写入速度比消费者进程快很多,这是可以的。但生产者只生产有限数量的工作,然后退出。我希望消费者线程能够处理 NSStreamEventEndEncountered 事件。当 NSInputStream 来自 NSMutableData 时,我如何发出信号?
我应该让生产者发送一系列带有表示流结束的神奇数字的字节吗?
解决方案
生产者将数据附加到 NSMutableData,接收者从该数据打开 NSInputStream 并分块读取。
那是行不通的。从 这 -initWithData:
文档:
的内容
data
被复制。
这意味着,它将复制当时数据对象中的所有内容,而不是在向其中添加更多数据时遵循数据对象的内容。
(同样适用于 +inputStreamWithData:
.)
尝试一下 管道 反而。
不隶属于 StackOverflow