Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OCaml中写入和读取内存映射文件_Ocaml_Memory Mapped Files - Fatal编程技术网

在OCaml中写入和读取内存映射文件

在OCaml中写入和读取内存映射文件,ocaml,memory-mapped-files,Ocaml,Memory Mapped Files,我正在OCaml中进行实验,以了解如何在内存映射文件中读取/写入数字数组 我想我需要使用Bigarray,但不确定如何将Bigarray数组写入内存映射文件,然后将其读回 我似乎在任何地方都找不到一个例子。我已经检查了Jane St.core的源代码,但没有结果。因为您似乎对使用core感兴趣: 这是他们文档中的map\u文件() map_文件共享fdn内存将与描述符fd关联的数据的n个字符映射到一个bigstring。如果shared为true,则对bigstring的所有更改都将反映在文件中

我正在OCaml中进行实验,以了解如何在内存映射文件中读取/写入数字数组

我想我需要使用Bigarray,但不确定如何将Bigarray数组写入内存映射文件,然后将其读回


我似乎在任何地方都找不到一个例子。我已经检查了Jane St.core的源代码,但没有结果。

因为您似乎对使用core感兴趣:

这是他们文档中的
map\u文件(

map_文件共享fdn内存将与描述符fd关联的数据的n个字符映射到一个bigstring。如果shared为true,则对bigstring的所有更改都将反映在文件中

不过,你应该接受乔纳森创造的答案。

我只是在回答这个问题(我原本担心我没有抓住你的重点)。默认情况下,OCaml库为此提供了一种机制,即。它正是您想要的,相当于在Unix下对文件进行
mmap
。我不确定Windows的具体细节


这样做的好处是得到了很好的支持和测试,如果您不需要JaneSt的Core,也不需要将它导入到您的项目中。

map\u file
?@Jonathan Protzenko:回答这个问题,它看起来很好。顺便说一下,将stdlib与核心代码混合使用通常是安全的吗?只要不使用异步,就应该是安全的。许多core模块都是相应stdlib模块的包装。查看core中的
Caml
模块,它包装了整个stdlib,以备您需要使用。
val map_file : shared:bool -> Unix.file_descr -> int -> t