Eşlenmiş bir ikili dosyayı belleğe oluşturmak istiyorum; ancak sistemde eşlenecek dosyayı nasıl oluşturacağımı bilmiyorum. Dokümantasyonu birkaç kez okudum ve biri haritalanmış, diğeri süreçler arası olmak üzere 2 adet eşlenmiş dosya uygulaması olduğunu anlıyorum. Boost iostream mapped dosyası ile inter-interced mapping dosyası arasında fark var mı?
siz paylaşılan belleğe eşlenmiş dosyasının nasıl oluşturulacağı üzerinde bir fikrin var mı? Çok iş parçacıklı bir programın bir ikili dosya biçiminde yazılmış büyük çift bir diziyi okumasına izin vermeye çalışıyorum. Ayrıca iostream ve interprocess'te eşlenen dosya arasındaki fark nedir?cevap
Bildiğim kadarıyla söyleyebilirim, iostreams paylaşılan hafızada eşlenen dosyasını yerleştirin (bu ne istediğiniz) olacak; Ancak, süreçler arası süreç, dosyayı başka bir işlemin adres alanına yerleştirir. Eğer bir şekilde birbirleriyle iletişim olacaktır çoklu süreçleri (dişleri değil) yoksa
Muhtemelen iostreams kullanmalıdır.
İkisi arasında gördüğüm en önemli fark, nasıl kullanıldığının. boost-interprocess'da, bellek eşlemeli bir dosya kullanmak için, new
yerleşimini kullanarak bu bellek alanında nesneler oluşturursunuz ve bu nesneler dosyanızdaki ikili formda otomatik olarak kalıcı olur. Diğer işlemler daha sonra aynı dosyayı eşleyebilir ve bu nesneleri kullanabilir veya programın kendisini kalıcı bir önbellek olarak kullanabilir ve daha sonra yeniden yükleyebilir. boost-iostreams'daki bellek eşlemeli dosyalar, dosya akışları gibi, boost::iostream
olmanın ek faydaları gibi davranır ve ara işlem iletişimine akış anlamlarını sağlar. Tek bir süreç için
boost::iostream
bellek haritalı dosyalarını kullanarak çok yararı yoktur. Ancak, daha önce belleğe yüklenecek olan dosya ile çalışmanın gecikmesini azaltabilir. Ancak, yalnızca dosyanın parçalarını sürekli yeniden yazıyorsanız bu avantajı elde edersiniz. Dosyanın tek bir okuma/yazma işlemi için herhangi bir hızlanma olmayabilir.
- 1. "iostream" dosyası Xcode 4.2'de bulunamadı
- 2. Bellek Mapped dosyası bir WPF kılavuzuna dönüştürüldü
- 3. # İçinde iostream var mı? C
- 4. Normalde Express'te değişkenler arasında fark var mı?
- 5. 'And' ve 'AndAlso' ile linq'de linkalar arasında fark var mı?
- 6. Parantez ile örnekleme veya olmadan arasında bir fark var mı?
- 7. c de 1U ile 1 arasında bir fark var mı?
- 8. LayoutInflater.from (context) ile context.getLayoutInflater() arasında bir fark var mı?
- 9. Strstream ile stringstream arasında fark
- 10. Nesne dosyası ve statik kitaplık (arşiv dosyası) arasındaki fark nedir?
- 11. Guice @provides ve bind() arasında bir fark var mı?
- 12. - Bir fark var mı?
- 13. BLOB'lar ve bağlı bileşenler arasında fark var mı?
- 14. al bir kaynak dosyası var
- 15. C# - Proje dosyası arasında kaynak dosyasını paylaşma
- 16. Ben harici dosyası var
- 17. Bu bash dosyası var
- 18. VisualStudio'da birden çok ana CPP dosyası var mı?
- 19. Aşağıdakiler arasında herhangi bir fark var mı: window.localStorage ve localStorage?
- 20. $ (e.currentTarget) ve $ (this) arasında bir fark var mı?
- 21. /mnt/sdcard ve/sdcard arasında bir fark var mı?
- 22. System.Windows.Clipboard ve System.Windows.Forms.Clipboard arasında bir fark var mı?
- 23. Arasında bir fark var mı? ve * cron ifadelerinde? Garip örnek
- 24. Javascript'te "this" ve "prototype" kullanımı arasında bir fark var mı?
- 25. gluLookAt() ve glFrustum() arasında bir fark var mı?
- 26. WPF TextBlock ve TextBox arasında bir fark var mı?
- 27. TParallel. & For ve TParallel.For arasında bir fark var mı?
- 28. Varyant() ve varyant arasında bir fark var mı?
- 29. if (! $ Array) ile if (boş ($ array)) arasında bir fark var
- 30. Project.properties dosyası yerine default.properties dosyası
Açıklama için teşekkürler Joe, iostream'i deneyeceğim. – Yijinsei
@Joe D: Bu, süreçler arası kütüphaneden aldığım izlenim değil. Özellikle, belgelere göre: "sistem, dosyayı ve işlemin adres alanını ilişkilendirmek için bir dosya eşlemesi oluşturur." Birden çok işlem için, aslında bir dosya sistemi yedeği ile bellek paylaştı. – rcollyer
Evet, ancak arası işlem kitaplığı bir dosya sistemi yedeği oluşturmuyor, yalnızca dosyayı süreçler arası paylaşılan belleğe eşler. Ancak iostreams, bunu tek bir işlem için belleğe eşler. Muhtemelen (uygulamayı kontrol etmedim) daha verimli. –