簡體   English   中英

Goroutine無法運行

[英]Goroutine does not run

我正在嘗試使用goroutine將項目寫入數據庫。 但是,goroutine似乎由於某種原因沒有執行任何操作。

我有以下功能:

func addEvent(w http.ResponseWriter, r *http.Request) {
    body, err := ioutil.ReadAll(r.Body)
    fmt.Println(string(body[:]))

    if err != nil {
        panic(err)
    }

    eventCh := make(chan []byte)
    eventCh <- body
    go models.WriteEventToDb(eventCh)

}

func WriteEventToDb(eventCh chan []byte) {
    fmt.Println("event")
    event := <-eventCh
    newEvent := createNewEvent(event)
    err := db.Insert(&newEvent)

    if err != nil {
        panic(err)
    }

}

知道為什么WriteEventToDb無法運行嗎?

您的函數在啟動goroutine之前就已阻塞:

eventCh := make(chan []byte)
eventCh <- body

這將創建一個新通道,並且在可以將其傳遞給任何其他例程之前,它將嘗試向該通道發送消息。 由於通道是無緩沖的,並且沒有任何內容可讀取,因此發送將無限期地阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM