问题标签 [memory-mapped-files]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在文档聚合中存储临时 PDF 文档的高效方法?
我必须从磁盘加载数百个各种类型的文档并生成一个巨大的聚合 PDF。
我的方法是将每个文档单独转换为 PDF,然后聚合它们。
作为此过程的一部分,我一直在将每个 PDF 文档写入独立存储。
有没有更好的方法来做到这一点?
性能是重中之重——这是客户端。
c++ - 在共享内存中读取不同的数据类型
我想在运行 DLL 的不同进程之间共享一些内存。因此,我创建了一个内存映射文件,HANDLE hSharedFile = CreateFileMapping(...)
然后LPBYTE hSharedView = MapViewOfFile(...)
LPBYTE aux = hSharedView
现在我想从 aux 数组中读取 a bool
、 a int
、 afloat
和 a 。char
阅读bool
和char
很容易。但是我将如何阅读 a int
or float
?注意int
orfloat
可以从位置 9 开始,例如一个不能被 4 整除的位置。
我知道你可以读 achar[4]
然后memcpy
把它读成 a float
or int
。但我真的需要这个非常快。我想知道是否可以用指针做一些事情?
提前致谢
c# - 使用 C# 将数百个文件写入磁盘的最快方法是什么?
我的程序应该将数百个文件写入磁盘,由外部资源(网络)接收每个文件都是一个简单的文档,我目前将其以 GUID 的名称存储在特定文件夹中,但创建数百个文件,写入,关闭是一个漫长的过程过程。
有没有更好的方法将这些数量的文件存储到磁盘?我已经找到了一个解决方案,但我不知道它是否是最好的。
首先,我创建了 2 个文件,其中一个类似于分配表,第二个是一个巨大的文件,用于存储我的文档的所有内容。但是从这个文件中读取将是一场噩梦。也许内存映射文件技术可以提供帮助。使用 30GB 或更多会产生问题吗?
编辑:在磁盘上存储 1000 个文本文件的最快方法是什么?(写操作频繁执行)
windows - 控制对内存映射文件的读/写(Windows)
您是否打算防止同时读取/写入由多个进程打开的文件映射内存?
例如,如果内存中的一个字符串是“hello”并且一个进程在其上写入“hi...”,我是否正确地说另一个同时读取的进程可能会得到一个像“hi.lo”这样的间歇值?
基本上我要问的是人们如何再次保护这些东西。你打算使用信号量吗?这些是否跨流程工作?
c++ - 默认情况下,Windows 内存映射文件内容是否始终归零?
我凭经验确定,在我的系统上,默认情况下,创建为特定大小的内存映射文件总是完全归零。例如,使用调用
.. 并写入该文件的映射视图总是会产生一个完全归零的 20MB 文件,除非我写入了非零数据。
我想知道是否可以假定文件的未初始化部分为零。这种行为通常在 Windows 上得到保证吗?
database - 简单、快速、可靠的数据库 (NoSQL)
我正在寻找一种解决方案来为我的本机代码应用程序添加持久性。它应该简单(无 SQL)、快速且最重要的是可靠。
我能想到的最好方法是使用内存映射文件。它尽可能简单和快速 - 您只需将值存储在“内存”中的纯数据数组中。但是,我认为它不是很可靠——电源故障可能会使数据库处于不一致或损坏的状态。能够以事务方式将一组内存映射文件同步到磁盘可以解决这个问题,但我认为这是不可能的。此外,除非文件系统支持快照或 COW 克隆(例如Brtfs),否则备份将意味着在复制文件时必须完全停止应用程序。
有没有人有更好的想法?
c++ - 内存映射文件 - 如何在其他进程中插入一条数据
我的文件(sample.txt)有 10 个字符。我以写模式打开文件,做了一个createfilemapping("mymapping")
. 然后我通过 getchar 持有该过程。然后打开另一个执行以下操作的进程
现在我可以访问 sample.txt 的值并通过 k 更改它。但是,如何在文件中插入/附加一条另外 10 个字符。
windows - 识别内存映射文件
我正在使用 VirtualQuery 识别部分进程的虚拟内存。我确定了映射文件(MEM_MAPPED)占用的区域,但是如何确定分配在那里的文件的实际文件(文件名)?我想它与 MapView* API 系列有关,但不能完全弄清楚......
c++ - boost::interprocess::mapped_region 更改时的线程通知
当 boost::interprocess::mapped_region 中的字节使用 interprocess_condition 更改时,如何通知我。
我打开了一个文件,并正确映射了特定区域。当我轮询并打印内存时,更新已经成功。我现在希望收到有关更改的通知,而不是不断地轮询。
如何使用 interprocess_condition 通知我的线程内存已更改?