相关疑难解决方法(0)

附加到内存映射文件

我不断附加股票报价(整数,多头,双打等).我用mmap将此文件映射到内存中.

将新附加数据作为内存映射的一部分提供的最有效方法是什么?

我知道我可以再次打开文件(新文件描述符),然后mmap它来获取新数据,但这似乎是低效的.我建议的另一种方法是以1mb块预先分配文件,写入特定位置直到到达结尾然后将文件ftruncate为+ 1mb.

还有其他方法吗?

Doest Boost对此有何帮助?

c++ boost mmap

22
推荐指数
2
解决办法
1万
查看次数

如何创建和写入内存映射文件?

编者注:此代码示例来自1.0之前的Rust版本,它使用的代码在Rust 1.0中不存在.一些答案已经更新,以回答更新版本的Rust的核心问题.

我正在尝试使用创建内存映射文件std::os::MemoryMap.目前的方法如下:

use std::os;
use std::ptr;
use std::old_io as io;
use std::os::unix::prelude::AsRawFd;
use std::os::MapOption;

let path = Path::new("test.mmap");

let f = match io::File::open_mode(&path, io::Open, io::ReadWrite) {
    Ok(f) => f,
    Err(err) => panic!("Could not open file: {}", err),
};

let mmap_opts = &[
    MapOption::MapReadable,
    MapOption::MapWritable,
    MapOption::MapFd(f.as_raw_fd())
];

let mmap = match os::MemoryMap::new(1024*1024, mmap_opts) {
    Ok(mmap) => {
        println!("Successfully created the mmap: {}", mmap.len());
        mmap
    }
    Err(err) => panic!("Could not read the mmap: {}", err),
};

unsafe {
   let …
Run Code Online (Sandbox Code Playgroud)

mmap rust

14
推荐指数
2
解决办法
5943
查看次数

标签 统计

mmap ×2

boost ×1

c++ ×1

rust ×1