9得票3回答
使用Win32/WINAPI通过内存映射文件传输数据

我需要将一些数据 - char buffer[100000]; - 传输到由我启动的子进程中。 目前,我正在使用普通文件来实现,父进程将数据写入磁盘上的文件,然后子进程从磁盘读取并删除该文件。但是,这会导致不必要的磁盘写入,因此我想改为使用内存映射文件。 如何创建、写入和读取内存映射文件,...

9得票1回答
如何异步刷新内存映射文件?

我正在使用内存映射文件在Windows 7 64位系统下读取/写入大量图像文件(~10000 x 16 MB)。我的目标是: 尽可能多地缓存数据。 能够尽快地分配新图像并写入这些图像。 因此,我使用内存映射文件来访问文件。缓存效果很好,但操作系统直到我几乎用完物理内存才会刷新脏页。因此...

9得票2回答
内存映射随着时间的推移变慢,有替代方法吗?

我在磁盘上存储了约700个矩阵,每个矩阵大约有70k行和300列。我需要相对快速地加载这些矩阵的部分数据,每个矩阵中大约1k行,加载到我在内存中的另一个矩阵中。我发现使用内存映射的方式是最快的方法,最初我可以在约0.02秒内加载1k行数据。然而,性能并不稳定,有时候,加载每个矩阵需要长达1秒的...

8得票1回答
Mac OS是否有创建匿名文件映射的方法?

在UNIX世界中,创建一个由RAM或页面文件支持而不是磁盘文件的文件映射对象的标准方法是调用shm_open。这将创建一个带名称的内存映射,并返回一个文件句柄,您可以将其传递给mmap。 问题在于它会创建一个名称。如果我能创建一个匿名内存映射就好了。这将解决两个问题: 1. 它将避免同一程...

8得票2回答
C# UWP Windows 10使用MemoryMappedFiles进行进程间通信的问题

我遇到了一个新问题,这个问题在我为应用程序进行IPC编码时出现。 在使用UWP之前,我能够成功地使用指令using System.IO.MemoryMappedFiles;。但是现在我无法使用using System.IO.MemoryMappedFiles;,而且我需要它。 是否有人遇到...

8得票2回答
如何“安全”处理互斥锁?

我不断地从一个内存映射文件中读取另一个进程正在写入的数据,并使用互斥锁来同步此操作。在我的一些测试中,这种方法正常运行,但是...如果我的应用程序在获取互斥锁后立即崩溃而没有释放它,有没有办法保证互斥锁的释放,即使出现这样的崩溃情况? 另外,如果另一个进程崩溃了并且可能还没有释放互斥锁,我该...

8得票2回答
将NumPy的memmap刷新到npy文件中

有没有一种方法可以将numpy的memmap数组保存到.npy文件中? 显然,有一种方法可以从.npy文件中加载这样的数组,如下所示: data = numpy.load("input.npy", mmap_mode='r') 但是刷新文件并不等同于将其存储为.npy格式。 如果刷新是...

8得票1回答
超过内存大小的文件如何通过内存映射文件工作?

我正在处理一个比我的内存更大的数据文件。 据我所知,它将文件中的每个字节映射到虚拟内存中的一个地址。只有在实际需要时(例如访问特定条目),才会将数据读入真正的内存,并且以称为页面的块进行读取。 但是,如果最终要处理数据文件中的所有内容,这是否意味着最终需要将所有内容读入真正的内存中?操作系...

8得票1回答
增加内存映射文件的大小。

可能是重复的问题: 如何动态扩展内存映射文件 你好,我在Windows中使用内存映射文件存储树形数据结构,当我需要插入记录时,我会检查它的空闲指针是否更接近文件末尾。但真正的问题是关于调整文件大小。 在Windows文档中,据说“CreateFileMapping”将根据其参数调整文...

8得票1回答
当访问模式为RDWR时,为什么需要刷新内存映射文件?

我正在阅读 Golang 的内存映射文件实现之一,https://github.com/edsrzf/mmap-go/。首先,他描述了几种访问模式: // RDONLY maps the memory read-only. // Attempts to write to the MMap o...