2012-07-24 33 views

回答

4

在mmapper的Mmap方法中查找http://golang.org/src/pkg/syscall/syscall_unix.go。您应该能够复制该代码并根据需要进行调整。

当然,你不能将mmap转换为[]字节,因为片段长度被定义为“int”(此时到处是32位)。您可以将mmap映射到更大的元素类型(例如[] int32),或者仅使用指向内存的指针,但它不会成为syscall.Mmap的替代替代品。

+0

即使我映射到[] int64,它只会处理最大16GB的文件,对吧?在现代64位平台上仍然非常有限。 – Rio 2012-07-24 12:06:52

+0

这是16GB的一次。您可以根据需要经常重建片头,而无需重新mmap。 – dsymonds 2012-07-26 06:50:15

+0

令人失望。切片应该是指针算术的更好的替代品,所以它们消除了指针算术(除了“不安全”的包),但切片是束手无策的!我认为切片索引类型应该是uintptr,并自动转换为其他整数类型。 – Matt 2012-07-27 18:51:43