[英]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.