我在RHEL 5.8上开发了一个多线程应用程序,通过mmap读取大文件(每个文件约500MB),并进行一些处理。其中一个线程执行mmap操作,其他线程执行处理操作。当文件不再存在于文件系统中时,执行munmap以释放内存。
我的问题是munmap(有时还包括对文件的关闭)会减缓其他线程,这些线程在处理不同的内存块,因此我想知道是否有更好的实现方式。我有两个想法:将内存分成较小的块以munmap较小的块(这种情况可能吗?),或者根本不使用munmap,自己分配/释放内存,如果文件不再存在于文件系统中,则可选地缓存内存块,并将其重复使用于下一个文件。
感谢任何想法。
我的问题是munmap(有时还包括对文件的关闭)会减缓其他线程,这些线程在处理不同的内存块,因此我想知道是否有更好的实现方式。我有两个想法:将内存分成较小的块以munmap较小的块(这种情况可能吗?),或者根本不使用munmap,自己分配/释放内存,如果文件不再存在于文件系统中,则可选地缓存内存块,并将其重复使用于下一个文件。
感谢任何想法。
mmap()
参数(共享/私有,保护)吗? - Yann Droneaud