[C#] 使用 SpinWait 實作檔案存取 Lock 機制

今天在設計檔案 Lock 機制的時候,發現了一個好物 SpinWait 可以用,比起 Thread.Sleep() + While(true) 更來的方便效能也較佳。

多條執行續存取相同檔案時,基本要注意的事情如下:

  1. 我讀取檔案時,允許他人讀取不允許寫入。
  2. 我寫入檔案時,不允許他人讀寫。

這邊我設計了一個 FileHandler 來處理這件事情,程式碼如下:

waitFileForUse 這個 Method 裡面我使用了 SpinWait 來去判斷檔案是否可以存取,並設定 Timeout 秒數避免 Deadlock 的問題發生。

參考:[C#.NET][Thread] 善用 SpinWait 處理 執行緒空轉 以利提昇效能



這裡的資訊對您有用嗎?請我飲一杯咖啡?