Was ist der Vorteil zu tun: shm_open
folgte eine mmap
?
Warum nicht eine reguläre Datei erstellen und diese fd
an mmap
übergeben? Ich kann den Vorteil von shm_open
nicht sehen - das sind nur Referenzen, nicht wahr?Warum shm_open verwenden?
Ich habe den Mann der ganzen Familie gelesen. Es scheint mir, dass das "Geheimnis" in der mmaping Aktion liegt - die Datei "type" scheint bedeutungslos zu sein.
Alle Zeiger sind gut, vor allem mit Performance-Konto.
Mein Kontext ist ein (zyklischer überschreibbarer) Puffer (sagen wir 128MB), der ständig in einen Prozess geschrieben wird und ständig von einem anderen gelöscht wird.
Als Beispiel: Was ist los mit this offen/mmap Ansatz.
EDIT
Um genau zu sein, ist eine der folgenden Möglichkeiten besser als die anderen:
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);
gegen
fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR); mem = mmap(...same as before...);
Wenn ich eine Datei mit regelmäßigen open
unter den /dev/shm
fs erzeugt, und schüttete ein Gig von Müll, mein verfügbarer Speicher ging um 1G herunter, und mein verfügbarer Speicherplatz blieb gleich.
Was ist der Unterschied zwischen den beiden Methoden?
Versuchen Sie es einfach. Das Schreiben in eine Datei ist vielleicht hundertmal langsamer. –