亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang同時讀/寫文件而沒有顯式文件鎖定

Golang同時讀/寫文件而沒有顯式文件鎖定

Go
桃花長相依 2022-01-17 10:48:21
我有一種情況,我需要同時讀取/寫入文件,但操作范圍有限:僅追加,沒有隨機偏移寫入從隨機位置讀取,我確定之前已經寫入了內容(通過附加,通過 golang 通道進行內部訪問序列化,以確保隨機讀取僅在附加內容后發生)只有一個進程在運行這是一個高負載的應用程序,我想避免每次讀/寫鎖定文件我要打開 2 個文件 - 一個用于讀取,另一個僅用于附加這樣做會產生一些潛在的問題/錯誤嗎?如果我想避免每次讀/寫都鎖定文件,推薦的做法是什么?ps golang, linux, ext4
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我假設“隨機讀取”實際上是指“任意讀取”。

如果我正確理解您的用例,您無需手動查找或鎖定或執行任何操作。UNIX 通過O_APPEND. 這是您可以執行的操作:

  1. 用 . 打開文件os.O_APPEND。這樣每次寫入,無論之前的任何操作,都將轉到文件末尾

  2. 閱讀時使用File.ReadAt. 這使您可以為讀取指定任意偏移量

使用此方案,您可以避免任何形式的鎖定:操作系統會為您完成。由于緩沖區緩存,這種方案甚至不是低效的:追加和讀取幾乎是獨立的。


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號