有没有更好的方法来处理这个或者我正在使用的实现与我将得到的一样好?
如果一个输入流必须被多个消费者读取,并且输入流是短暂的(即,不是可以’重绕’或支持多个输入指针的资源),您通常必须提供一个缓冲方案,其行为就好像它会保留每个数据项,直到所有消费者都阅读它为止.
您有多种实施选择.最简单的是你的建议,开销主要是输出缓冲区中多个数据副本的存储空间.如果存储是一个问题,您可以提供单个缓冲区来维护单独的读指针,每个消费者一个,并且仅在内存中保留最低和最高读指针之间的数据.如果消费者以非常不同的速度读取数据,您仍然可能最终得到内存中的大部分或全部输入数据,此时某种输入限制或中间磁盘缓冲方案将变得必要.
我假设单个输入流不是持久的(即磁盘上的文件)……在这种情况下,解决方案是微不足道的.
翻译自:https://stackoverflow.com/questions/3135472/best-way-to-pipe-data-from-one-input-stream-to-multiple-output-streams