我正在使用C#處理兩種類型的應用程序。一個是Web服務,一個是MVC3應用程序。請求互斥記錄
我對兩者都有同樣的問題。我正在嘗試創建一個方法,在請求時返回分佈式節點的記錄。
併發問題導致這種情況是危險的。一旦進程「A」請求記錄工作。如果進程「B」在數據庫檢查記錄「A」之前請求一個,它們可能會得到相同的記錄,這對該系統不利。
在web服務我有一個被稱爲「GetRecordToProcess」一個Web方法。在控制器中也有相應的MVC3 ActionResult,它可以完成同樣的任務。
注意Web服務和MVC行動不需要是相互排斥的海誓山盟。他們實際上在兩張不同的表格上工作,但我碰巧在兩個單獨的項目中遇到了同樣的問題。
我有這樣一個工作版本與互斥,但進程正在運行我的CPU達到近60%,當我打電話Mutex.WaitOne這是baaaad。任何建議輕鬆的方式來做到這一點?這似乎很明顯,這將是一個普通的分佈式計算要求,我只是不知道通用的解決方案。
問題是,如果它不成功。這些是同步調用。我可以告訴客戶端重試,但似乎可能有更優雅的方式,我可以說GetRecordToWrite並總是期望記錄 – brandon
如果您第一次調用像TryCheckoutRecord()方法,這是可能的。如果該調用成功,您可以隨意調用GetRecordToWrite(),並始終期待結果 – cordialgerm