Jaka jest korzyść z wykonania: shm_open
po mmap
?
Dlaczego nie utworzyć zwykłego pliku, a następnie przekazać go fd
do mmap
?
Nie widzę korzyści z shm_open
- to tylko referencje, nieprawdaż?Dlaczego warto używać shm_open?
Przeczytałem człowieka z całej rodziny. Wydaje mi się, że "tajemnica" tkwi w akcji mmaping - plik "typ" wydaje się pozbawiony znaczenia.
Wszelkie wskaźniki będą dobre, zwłaszcza z kontem skuteczności.
Mój kontekst jest (cyklicznym nadpisywalnym) buforem (powiedzmy 128 MB), który będzie stale zapisywany jako jeden proces i ciągle odrzucany przez inny.
Jako przykład: co jest nie tak z podejściem open/mmap z this.
EDIT
Aby być precyzyjnym, to jedna z następujących lepiej niż inne:
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);
vs.
fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR); mem = mmap(...same as before...);
Kiedy utworzony plik z regularnym open
pod /dev/shm
fs, i po cenach dumpingowych Gig śmieci do niego, moja dostępna pamięć spadła o 1G, a moja dostępna przestrzeń dyskowa pozostała taka sama.
Jaka jest różnica między tymi dwoma metodami?
Po prostu spróbuj. zapis do pliku jest może sto razy wolniejszy. –