gpt4 book ai didi

objective-c - 多次处理潜在的大型 STDIN 数据

转载 作者:行者123 更新时间:2023-12-03 17:44:54 25 4
gpt4 key购买 nike

我想在一个类上提供一个访问器,该类为 STDIN 提供 NSInputStream,这可能是几百兆字节(或千兆字节,尽管可能性不大)的数据。

当调用者获取此 NSInputStream 时,它应该能够从中读取数据,而不必担心耗尽其中包含的数据。换句话说,另一个代码块可能会请求 NSInputStream 并期望能够从中读取。

如果不首先将所有数据复制到 NSData 对象中(我认为这会导致内存耗尽),我有什么选择来处理这个问题?返回的 NSInputStream 不必是同一个实例,它只需要提供相同的数据即可。

我现在能想到的最好办法是将 STDIN 复制到临时文件,然后使用该文件返回 NSInputStream 实例。这几乎是处理它的唯一方法吗?如果我走临时文件路线,有什么需要注意的吗?

编辑|我应该提到,它实际上不是 STDIN,这是在多线程 FastCGI 应用程序中,它是来自 STDIN 的 FCGX_Request.in 流。

最佳答案

从管道或套接字读取数据时,您有三个选择:

  • 处理它然后忘记它。
  • 将其添加到内存中的完整记录中,并在执行此操作之前或之后对其进行处理。
  • 将其添加到完整的文件中,并在执行此操作之前或之后对其进行处理。

这是完整的列表。除了短期或长期存储之外,没有其他地方可以记录它,因此您对读取的数据唯一能做的就是根本不记录它。

再次获取数据的唯一其他方法是无论发送给您的数据如何再次发送。

关于objective-c - 多次处理潜在的大型 STDIN 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2933671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com