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

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

Golang中的http.HandleFunc內部異步文件寫入

Golang中的http.HandleFunc內部異步文件寫入

Go
回首憶惘然 2023-07-17 16:21:13
我剛剛開始學習 Go。我正在編寫一個小型服務器應用程序,處理請求的函數(方法)(通過 http.HandleFunc)寫入文件 - 始終是同一個文件。據我了解,由于 http.HandleFunc 為每個請求啟動一個新的 goroutine,因此我擔心文件寫入可能最終會以某種方式相互干擾 - 通過相互阻塞或只是重疊。查看實際輸出,到目前為止這個問題還沒有出現,但是它是否會出現,如果是的話我該如何解決它?這是我的代碼的清理版本:package mainimport (     "os"     "net/http")type Service struct{     file *os.File}func (ser *Service) handleRequest(w http.ResponseWriter, req *http.Request){     //do lots of stuff that does not affect file     message := ...     n, err := ser.file.Write(message) //This is what I'm worried about     //handle error and wrap up}func main(){     m := http.NewServeMux()     fi,err := os.Open("/boolanger/file.txt")     //handle error     ser := &Service{file:fi}     m.HandleFunc("/service/", ser.handleRequest)     server := http.Server{        Addr:    ":8080",        Handler: m}     serverError := server.ListenAndServe()}理想情況下,我希望按照請求進入的順序進行文件寫入,但這并不那么重要。我更擔心不同的文件寫入會以某種方式干擾。
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

文件寫入是阻塞的和原子的。因此,并發寫入將相互等待,并且不會相互“干擾”,盡管輸出可能會交錯。如果您想要更多控制,請用 a 包裝您的寫入,sync.Mutex以確保一個例程在下一個例程開始寫入之前完成所有寫入。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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