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

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

如何解決寫入CSV時的“短寫”錯誤

如何解決寫入CSV時的“短寫”錯誤

Go
慕田峪7331174 2022-08-09 16:50:37
我一直遇到這個問題,我似乎無法弄清楚發(fā)生了什么。我有將一些信息附加到CSV的代碼。信息來自多個線程,CSV 正在記錄時間。在程序執(zhí)行過程中的某個時刻,代碼將開始吐出“短寫”,而不是寫入CSV。打印要輸出的數(shù)據(jù)時,“好”寫入和“短”寫入似乎沒有區(qū)別,一旦“短寫”錯誤停止,它就會繼續(xù),直到程序重新啟動。每次需要寫入 CSV 時都會調(diào)用此代碼。        output := []string{time.Message, strconv.FormatInt(time.Duration, 10)}        fmt.Println(output)        err := writer.Write(output)        if err != nil {            fmt.Println("An error encountered ::", err)            fmt.Println("writer.Write error")            logMessage(err.Error())        }        writer.Flush()看看我的輸出,這是它開始短寫的地方。[message1 21][message2 207][message3 79]An error encountered :: short writewriter.Write errorshort write這是我在CSV中的輸出message1,21message2,207ssage2,207所以看起來短寫來自第二行,但為什么它把我的信息寫了兩次,為什么它是“短寫”消息?有數(shù)百條成功的消息,然后錯誤似乎突然發(fā)生。看看代碼,調(diào)用CSV編寫器功能的地方只命中了一次,所以我真的被困在為什么會發(fā)生這種情況。
查看完整描述

2 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗 獲得超4個贊

應(yīng)用程序在 上有數(shù)據(jù)競賽。使用同步?;コ怏w,以確保一次只有一個 goroutine 訪問寫入器。writer


mu.Lock() // <-- Lock to prevent concurrent write and flush.

output := []string{time.Message, strconv.FormatInt(time.Duration, 10)}

fmt.Println(output)

err := writer.Write(output)

if err != nil {

  fmt.Println("An error encountered ::", err)

  fmt.Println("writer.Write error")

  logMessage(err.Error())

}

writer.Flush()

mu.Unlock() // <-- Unlock.

在應(yīng)用程序上運行比賽檢測器并修復(fù)任何報告的問題。


查看完整回答
反對 回復(fù) 2022-08-09
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

我猜你正在使用帶有緩沖區(qū)的作家(如)。當(dāng)灌漿機(jī)將數(shù)據(jù)寫入緩沖區(qū)而另一個灌漿機(jī)嘗試刷新時,會發(fā)生此錯誤。bufio


只需在關(guān)鍵部分添加一個儲物柜即可。


mu.Lock()

// critical section

mu.Unlock()


查看完整回答
反對 回復(fù) 2022-08-09
  • 2 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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