Файл, отображаемый в память, фактически частично или полностью отображается в памяти (ОЗУ), тогда как файл, в который вы пишете, записывается в память, а затем записывается на диск. Файл с отображенной памятью извлекается с диска и явно помещается в память для чтения и / или записи. Он остается там, пока вы не удалите его.
Доступ к диску медленнее, поэтому, когда вы записали в файл, он будет записан на диск и больше не будет находиться в ОЗУ, а это значит, что в следующий раз, когда вам понадобится файл, вы, возможно, получите его с диска (медленно), тогда как в отображенных в память файлах вы знаете, что файл находится в ОЗУ, и вы можете получить к нему более быстрый доступ, чем когда он находится на диске.
Кроме того, отображенные в память файлы часто используются в качестве механизма IPC, поэтому два или более процесса могут легко совместно использовать один и тот же файл и читать / записывать его. (используя необходимые механизмы Synnh)
Когда вам нужно часто читать файл, и этот файл достаточно велик, может быть целесообразно отобразить его в памяти, чтобы у вас был более быстрый доступ к нему, а затем приходилось открывать его и каждый раз получать его с диска.
EDIT:
То, что зависит от ваших потребностей, когда у вас есть файл, к которому очень часто будут обращаться различные потоки, тогда я не уверен, что отображение памяти в файл обязательно будет хорошей идеей, с этой точки зрения вам нужно будет синхронизировать доступ к этому файлу mmap, если вы хотите, чтобы он записывал в него, в одних и тех же местах из разных потоков. Если это случается очень часто, это может стать причиной спора о ресурсах.
Просто чтение из файла, тогда это может быть хорошим решением, потому что вам не нужно синхронизировать доступ, если вы только читаете из него несколько потоков. В тот момент, когда вы начинаете писать, вам нужно использовать механизмы синхронизации.
Я предлагаю, чтобы у каждого потока был свой собственный доступ к файлу потоком локальным способом, если вам нужно записать в файл, так же, как вы делаете с любым другим файлом. Таким образом, это уменьшает необходимость синхронизации потоков и вероятность ошибок, которые трудно найти и отладить.