從文檔中我可以看出,它們不是,另一方面,RAII是現代cpp的特徵之一。增強映射文件RAII?
http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/mapped_file.html
編輯:事實證明,答案是肯定的,但請請不要忘記使用.is_open()。
從文檔中我可以看出,它們不是,另一方面,RAII是現代cpp的特徵之一。增強映射文件RAII?
http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/mapped_file.html
編輯:事實證明,答案是肯定的,但請請不要忘記使用.is_open()。
縱觀實施,mapped_source/mapped_sink都包含一個共享指針底層mapped_file_impl (See here for the mapped_file_impl source)
正如你所看到的,一旦最後引用被破壞,它調用從映射文件分離析構函數。但是,它不會銷燬映射文件,只不過是銷燬一個ofstream
刪除底層文件。
Tnx,順便說一句,你知道,如果他們是線程安全的,多個線程可以同時寫入到differenf文件? – NoSenseEtAl
不同的設備似乎是線程安全,因爲它們各自執行映射/緩衝區。多個線程寫入同一個設備,我不確定。 –
[Boost.Interprocess](http://www.boost.org/libs/interprocess/)'內存映射文件肯定是** RAII;不知道關於Boost.IOStreams。 : - [ – ildjarn
不幸的是,關於[*§3.7對象生命週期*](http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/guide/lifetimes.html)部分的文檔只有這個說:「[要在下一個版本中提供]」:( –