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

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

Go lang multi waitgroup 和 timer 最后停止

Go lang multi waitgroup 和 timer 最后停止

Go
繁星coding 2023-06-05 17:06:13
我已經(jīng)編寫了以下代碼以便運行直到有人手動退出程序。它確實是----- 每 1 秒檢查一次是否存在----- 如果可用則讀取文件并逐行打印文件內(nèi)容為此,我首先從 main 調(diào)用一個函數(shù),然后我調(diào)用一個 waitgroup 并從那里再次調(diào)用一個函數(shù)來完成上述任務(wù)。請檢查我是否正確編寫了源代碼,因為我是 GO 的新手加上這只運行一次并停止......我想讓它保持活力并查看文件是否存在請幫我package mainimport (    "encoding/csv"    "fmt"    "io"    "log"    "os"    "sync"    "time")func main() {    mainfunction()}//------------------------------------------------------------------func mainfunction() {    var wg sync.WaitGroup    wg.Add(1)    go filecheck(&wg)    wg.Wait()    fmt.Printf("Program finished \n")}func filecheck(wg *sync.WaitGroup) {    for range time.Tick(time.Second * 1) {        fmt.Println("Foo")        var wgi sync.WaitGroup        wgi.Add(1)        oldName := "test.csv"        newName := "testi.csv"        if _, err := os.Stat(oldName); os.IsNotExist(err) {            fmt.Printf("Path does not exsist \n")        } else {            os.Rename(oldName, newName)            if err != nil {                log.Fatal(err)            }            looping(newName, &wgi)        }        fmt.Printf("Test complete \n")        wgi.Wait()        wg.Done()        time.Sleep(time.Second * 5)    }}func looping(newName string, wgi *sync.WaitGroup) {    file, _ := os.Open(newName)    r := csv.NewReader(file)    for {        record, err := r.Read()        if err == io.EOF {            break        }        if err != nil {            log.Fatal(err)        }        var Date = record[0]        var Agent = record[1]        var Srcip = record[2]        var Level = record[3]        fmt.Printf("Data: %s Agent: %s Srcip: %s Level: %s\n", Date, Agent, Srcip, Level)    }    fmt.Printf("Test complete 2 \n")    wgi.Done()    fmt.Printf("for ended")}
查看完整描述

1 回答

?
皈依舞

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

簡短的回答是你在循環(huán)中有這個:

    wg.Done()

這使得主 goroutine 在文件被讀取一次后立即退出。


更長的答案是您沒有在這里正確使用等待組,恕我直言。例如,將 a 傳遞給 絕對沒有WaitGroup意義looping。

目前尚不清楚您的代碼試圖完成什么 - 您當(dāng)然不需要任何 goroutines 來執(zhí)行您指定的任務(wù) - 它可以在沒有并發(fā)的情況下全部消失,因此代碼更簡單。


查看完整回答
反對 回復(fù) 2023-06-05
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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