1

是否可以在 Linux 上的 C++ 应用程序中使用 mmap() ,该应用程序必须从文件接收管道输入,如果是这样,这是否比从流中读取单个/page_amount 字节更快?

我不确定 mmap() 是否可行,因为管道涉及流,而 mmap() 不会立即需要所有可用数据吗?

4

1 回答 1

1

您不能mmap使用流,因为流缓冲区中的数据只能读取一次。此外,可接收数据的长度在运行时也是无法确定的。您最好的选择是mmap拥有足够的内存,然后将其用作接收缓冲区。

如果您使用stdio函数从流中读取数据,则块大小无关紧要。图书馆将自动选择最佳的一个(通常一次一页)。但是,如果您打算使用,read那么阅读大块页面将为您提供最佳性能。

于 2013-10-17T13:22:36.380 回答