如果從不同的進程/線程同時訪問文件會發生什麼? 我明白沒有標準的方式來鎖定文件,只有os特定的功能。C++ fstream併發訪問
在我的情況下,文件將經常閱讀和書面很少。 現在如果A
打開文件讀取(ifstream)並開始讀取塊。並B
打開寫作(ofstream)相同的文件,並開始寫作。會發生什麼?有沒有定義的行爲?
編輯 我的目標是對許多文件的併發讀寫訪問。但寫訪問不會經常發生。如果fstreams保證文件內容不會混淆,我會很滿意。
例如: 進程1和2寫入文件A.如果它們併發寫入,我不在乎是否將1或2的版本寫入磁盤,只要它是該文件的一致版本即可。
如果一個進程讀取一個文件而另一個進程同時寫入,我希望讀取進程獲得文件的「舊」版本。
如果fstreams不處理這個問題,我將使用一個數據庫。
如您所說,這是所有操作系統特定的。你在使用哪種操作系統?或者您在尋找便攜式解決方案嗎? – 2010-10-28 10:14:08
便攜式是首選,但我在Linux上。問題是如果fstreams有一個定義的行爲... – tauran 2010-10-28 10:15:24
據我所知,不,沒有定義的行爲。 – 2010-10-28 10:55:21