是否可以在Linux上的C ++应用程序中使用mmap(),它必须从文件接收管道输入,如果是这样,这比从流中读取单个/ page_amount字节更快吗?
我不确定mmap()是否可行,因为管道涉及流而不是mmap()需要立即提供所有数据?
答案 0 :(得分:1)
您不能mmap
一个流,因为流缓冲区中的数据只能读取一次。此外,可接收数据的长度在运行时是不确定的。最好的办法是mmap
足够的内存量,然后将其用作接收缓冲区。
如果您使用stdio
函数从流中读取数据,则块大小无关紧要。库将自动选择最佳的库(通常一次一页)。但是如果您打算使用read
,那么阅读大量的页面将为您提供最佳性能。