Go - mutual exclusion


  • Ex. Binary semaphore
    • Race Condition
    • Semaphore
  • Ex. sync.Mutex
    Mutex.Unlock happens before Mutex.Lock
  • Every Lock needs Unlock, can use defer to prevent missing Unlock
  • Go's mutex is not is not re-entrant, so can't lock a mutext which is already locked.
    To do that may cause deadlock. ex: lock in outer method and try to lock again in inner method
  • In order to prevent deadlock, need have two kinds of method. Exported method acquire lock, private method assume mutex already locked


沒有留言:

張貼留言

別名演算法 Alias Method

 題目 每個伺服器支援不同的 TPM (transaction per minute) 當 request 來的時候, 系統需要馬上根據 TPM 的能力隨機找到一個適合的 server. 雖然稱為 "隨機", 但還是需要有 TPM 作為權重. 解法 別名演算法...