第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Golang中的http.HandleFunc內(nèi)部異步文件寫入

Golang中的http.HandleFunc內(nèi)部異步文件寫入

Go
回首憶惘然 2023-07-17 16:21:13
我剛剛開始學(xué)習(xí) Go。我正在編寫一個(gè)小型服務(wù)器應(yīng)用程序,處理請(qǐng)求的函數(shù)(方法)(通過 http.HandleFunc)寫入文件 - 始終是同一個(gè)文件。據(jù)我了解,由于 http.HandleFunc 為每個(gè)請(qǐng)求啟動(dòng)一個(gè)新的 goroutine,因此我擔(dān)心文件寫入可能最終會(huì)以某種方式相互干擾 - 通過相互阻塞或只是重疊。查看實(shí)際輸出,到目前為止這個(gè)問題還沒有出現(xiàn),但是它是否會(huì)出現(xiàn),如果是的話我該如何解決它?這是我的代碼的清理版本: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()}理想情況下,我希望按照請(qǐng)求進(jìn)入的順序進(jìn)行文件寫入,但這并不那么重要。我更擔(dān)心不同的文件寫入會(huì)以某種方式干擾。
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

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



查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)