← Back to context

Comment by justmedep

1 day ago

You can even mmap a socket on some systems (iOS and macOS via GCD). But doing that is super fragile. Socket errors are swallowed.

My interpretation always was the mmap should only be used for immutable and local files. You may still run into issues with those type of files but it’s very unlikely.

mmap is also good for passing shared memory around.

(You still need to be careful, of course.)

  • It’s also great for when you have a lot of data on local storage, and a lot of different processes that need to access the same subset of that data concurrently.

    Without mmap, every process ends up caching its own private copy of that data in memory (think fopen, fread, etc). With mmap, every process accesses the same cached copy of that data directly from the FS cache.

    Granted this is a rather specific use case, but for this case it makes a huge difference.