Какое преимущество: shm_open
следует за mmap
?
Почему бы не создать обычный файл, а затем передать это fd
в mmap
?
Я не вижу преимущества shm_open
- это просто ссылки, не так ли?
Я прочитал человека всей семьи. Мне кажется, что "секрет" находится в действии mmaping - файл "type" кажется бессмысленным.
Любые указатели будут хорошими, особенно с учетной записью производительности.
Мой контекст - это (циклический перезаписываемый) буфер (скажем, 128 МБ), который будет постоянно записываться как один процесс и постоянно сбрасываться другим.
В качестве примера: что случилось с этим открытым /mmap.
ИЗМЕНИТЬ
Если быть точным, это одно из следующих лучше, чем другое: fd = open("/dev/shm/myshm.file", O_CREAT|O_RDWR, S_IRUSR | S_IWUSR);
mem = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
против fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR);
mem = mmap(...same as before...);
Когда я создал файл с регулярным open
под /dev/shm
fs и сбросил на него Gig мусора, моя доступная память опустилась на 1G, и мое доступное дисковое пространство оставалось прежним.
Какая разница между двумя методами?