如何在从NSMutableData读取的NSInputStream上发出NSStreamEventEndEncountered信号

时间:2009-04-23 12:15:35

标签: objective-c cocoa producer-consumer nsinputstream

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

那不行。来自the -initWithData: documentation

  

复制data的内容。

意思是,它会复制当时数据对象中的任何内容,而不是在向其添加更多数据时跟随数据对象的内容。

+inputStreamWithData:同样如此。)

尝试使用pipe