【问题标题】:How to signal an NSStreamEventEndEncountered on an NSInputStream reading from NSMutableData如何在从 NSMutableData 读取的 NSInputStream 上发出 NSStreamEventEndEncountered 信号
【发布时间】:2009-04-23 12:15:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c cocoa producer-consumer nsinputstream


    【解决方案1】:

    生产者将数据附加到 NSMutableData,接收者从该数据中打开一个 NSInputStream 并以块的形式读取。

    那是行不通的。来自the -initWithData: documentation

    data的内容被复制。

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

    +inputStreamWithData: 也是如此。)

    改用pipe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 2014-09-10
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多