geektutu / blog

极客兔兔的博客,Coding Coding 创建有趣的开源项目。

Home Page:https://geektutu.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go Mmap 文件内存映射简明教程 | 快速入门 | 极客兔兔

geektutu opened this issue · comments

https://geektutu.com/post/quick-go-mmap.html

简单理解,mmap 是一种将文件/设备映射到内存的方法,实现文件的磁盘地址和进程虚拟地址空间中的一段虚拟地址的一一映射关系。也就是说,可以在某个进程中通过操作这一段映射的内存,实现对文件的读写等操作。修改了这一段内存的内容,文件对应位置的内容也会同步修改,而读取这一段内存的内容,相当于读取文件对应位置的内容。

感谢您的教程。

func (demo *Demo) mmap() {
	b, err := syscall.Mmap(int(demo.file.Fd()), 0, defaultMemMapSize, syscall.PROT_WRITE|syscall.PROT_READ, syscall.MAP_SHARED)
	_assert(err == nil, "failed to mmap", err)
	demo.dataRef = b
	demo.data = (*[defaultMaxFileSize]byte)(unsafe.Pointer(&b[0]))
}

大佬可不可以讲下dataref的作用?

兔兔太强了