2011-02-18 25 views
0

我有3個進程每個都監聽數據源。所有3個進程在接收數據後都需要讀取和更新同一個文件。這3個過程整天持續運行。很顯然,每個進程都需要對文件進行獨佔讀/寫鎖定。有沒有更好的方法來處理讀取/寫入文件的多個進程

我可以使用「命名互斥體」來保護文件的讀/寫,或者我可以使用FileShare.None打開文件。

這兩種方法有效嗎?哪一個更好?

該程序是用C#編寫的,可在Windows上運行。

+0

要求是模糊的,不太可能。獨家閱讀鎖?你應該選擇一種方法,當事情出錯時不會吮吸。就像擁有互斥意外崩潰的進程一樣。或者持續太久,導致另一個進程與OOM崩潰。用dbase服務器進入成功的大本營。 – 2011-02-18 04:15:59

回答

1

爲此使用一個已命名的互斥鎖。如果您在一個進程中使用FileShare.None打開文件,其他進程在嘗試打開該文件時將會拋出異常,這意味着您必須在這些進程中處理等待和重試等操作。

0

我同意這個命名的互斥體。等待/重試文件訪問非常繁瑣且容易出現異常,而命名的互斥體解決方案非常簡潔明瞭。

0

「monitor」是你選擇的一個,因爲它是同步問題的解決方案。

相關問題