有一個生產者會將新檔案下載到本地檔案系統(它永遠不會修改現有檔案),還有一個消費者會定期檢查是否有新檔案并讀取新檔案。
我有點困惑為什么生產者需要在創建新檔案之前鎖定目錄,而消費者在讀取新檔案時會鎖定目錄,因為不會修改現有檔案,所以應該沒有問題讀者在閱讀時編輯檔案的作者。
謝謝
uj5u.com熱心網友回復:
生成檔案不是原子的。首先,創建一個空檔案。然后將其內容寫入其中,可能是多次寫入。每次寫入都會修改檔案,因此您聲稱檔案永遠不會被修改是錯誤的。
使用鎖來確保消費者只獲取完整的檔案。[1]
可以使用其他鎖定方法。例如,生產者可以創建后綴為 的檔案.tmp,然后在檔案完成后將檔案重命名(而不是復制)為正確的名稱。如果消費者忽略以 結尾的檔案.tmp,那么它只會選擇完整的檔案。[2]
在生產者永遠不會再添加它的意義上完成。但這并不意味著該檔案包含它應該包含的所有內容。如果生產者崩潰,并且自動釋放鎖,消費者可能只會收到預期內容的一部分。
真正完整。不僅生產者永遠不會再添加它,而且生產者打算寫入檔案的所有內容都被寫入了。(沒有在完全錯誤的時刻發生電源故障或類似的劇烈事件。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457197.html
上一篇:從C中的.txt檔案中獲取資料
下一篇:通過重疊合并兩個表?
