2013-05-09 64 views
1

對於使用名稱鎖定進行鎖定是使用命名互斥鎖的替代方法嗎?通過名稱鎖定(互斥選擇)

鎖定是爲Web應用程序防止在同名資源上多次並行執行操作,所以我需要按名稱鎖定。 IE瀏覽器。可以同時在不同名稱的資源上執行該操作。資源名稱是一個以url形式出現的字符串。可以說,資源只是一個實體。

被命名爲mutex這個最好的選擇嗎?不是太重?

+1

向我們展示一些代碼。 – Nick 2013-05-09 07:41:59

+1

爲什麼你需要一個命名互斥鎖來鎖定一個字符串?說真的,只是堅持一個正常的互斥體,你會很好。被稱爲Mutex的是用於跨多個進程的系統範圍鎖定。 – 2013-05-09 07:43:13

+0

你要保護什麼樣的資源? – 2013-05-09 07:44:13

回答

1

如果您覺得沉重是指性能影響,那麼與通常處理Web請求的成本相比,使用已命名的互斥量應該可以忽略不計。

我認爲命名互斥是一個很好的選擇,因爲那樣你獨立於你的服務託管方式(無論是單個還是多個進程取決於服務器,而不取決於你的服務),特別是如果你的服務是一個可能被許多Web應用程序使用的庫。除了被限制在一個進程之外,lock還需要一個用於鎖定的共享對象引用,所以您需要一個對所有線程/請求都可見的引用,這是一個互斥的名稱(事先已知)優雅地解決的問題。

話雖如此,當保護一個資源時,最好保護資源本身而不是資源的入口點。例如,如果您的服務保護對數據庫某些部分的併發訪問,那麼最好使用具有適當隔離模式的數據庫事務,或者如果您在文件系統中保護某些內容,則獲得對文件的獨佔訪問等