2009-06-02 145 views
1

我有一個自定義CMS,其中使用靜態XElement作爲站點地圖。當更新發生在地圖上時,我正在同步寫入程序線程,但是與讀取程序無關,只是允許它們在需要時抓取XElement。Shared XElement as SiteMap

在測試中,我認爲如果我從讀者線程枚舉XElement,而在另一個寫入線程上更新XElement,我會得到一個異常。事實並非如此。只是想知道如果任何人能夠向我解釋他們是否看到這種方法的任何重大問題。它似乎並不安全,但我迄今爲止的所有測試都表明它是安全的。

回答

0

使用System.Threading.ReaderWriterLock來控制對XElement的訪問。這樣,您可以同步所有讀者和任何作者,而不會阻止併發讀取活動。

+0

鎖定應該在XElement本身還是共享靜態對象上完成? – user115963 2009-06-02 12:57:06