《企業應用架構模式》讀書筆記1-併發

避免併發

隔離性和不變性
1、隔離
    劃分數據,使得每一片數據只能被一個執行單元訪問。
    隔離是一種減少錯誤發生的有效技術。可以使用隔離方法安排資源,以便程序進入的是隔離區,而無需考慮併發問題。
    好的併發設計應該是:找個各種創建隔離區的方法,並且保證每個隔離區裏能夠完成儘可能多的任務。

2、不變性
    只有共享數據可以修改的情況下,纔會出現併發問題。所以,一個避免併發衝突的方法是識別哪些是不變的數據。  
    通過定義某些不變的數據,或者至少是幾乎總不變的,就可以不用考慮這些數據的併發。

併發處理

樂觀鎖和悲觀鎖
    1、樂觀鎖
        使用版本號,時間戳等,在提交數據時進行比對,來檢測衝突,它其實不是鎖,只是一種衝突檢測策略。
    2、悲觀鎖
        同一個時間段,只能有一個執行單元來修改數據,其他執行單元必須等待它執行完才能獲取數據。它是一種衝突避免策略。

    3、選擇使用哪一種鎖?
        選擇標準是:衝突的頻繁性和嚴重性。如果衝突很少,或者後果不是很嚴重,那麼通常情況下選擇樂觀鎖策略。
        如果衝突的結果對用戶來說是痛苦的,那麼就要使用悲觀鎖策略。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章