Если у вас есть отношения родитель / потомок, прекрасно использовать mmap.
sysv_shm - это исходная реализация Unix, которая позволяет связанным и несвязанным процессам совместно использовать память. posix_shm стандартизированная разделяемая память.
Если вы используете систему posix без mmap, вы должны использовать posix_shm. Если вы используете unix без posix_shm, вы должны использовать sysv_shm. Если вам нужно разделить память только с родительским / дочерним, вы должны использовать mmap, если он доступен.
shm
в Linux обычно реализуется через файл / dev / shm
, который получает mmap
ped, поэтому производительность должна быть эквивалентной - - Я бы выбрал mmap
(w / MAP_ANON
и MAP_SHARED
, как вы упомянули) для простоты, если я знаю, что переносимость не является проблемой, как вы говорите. для вас.
Если память не изменяет, единственная причина использовать SysV / POSIX вместо mmap
- это переносимость. В частности, старые системы Unix не поддерживают MAP_ANON
. Однако Solaris, Linux, BSD и OS X поддерживают , поэтому на практике нет особых причин не использовать mmap
.