1. 程式人生 > >關於“鎖”的問題,專案比較大的情況下不能直接隨便的加樂觀鎖,不想麻煩改資料庫,不想用lock排隊等

關於“鎖”的問題,專案比較大的情況下不能直接隨便的加樂觀鎖,不想麻煩改資料庫,不想用lock排隊等

    private static Dictionary<int, object> lockObj = new Dictionary<int, object>();         private object getObj(int bedId)         {             object o = null;             bool haveValue = lockObj.TryGetValue(bedId, out o);

            if (haveValue)             {                 return o;             }             else             {                 lockObj.Add(bedId, new object());                 return lockObj[bedId];             }         }

   var lockbedId = getObj(model.FK_BedInfo);             lock (lockbedId)             {

      //想放的業務邏輯程式碼

            }