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
这会创建一个新频道,在将其传递给任何其他例程之前,它会尝试向该频道发送消息。由于通道是无缓冲的并且没有任何内容从中读取,发送无限期阻塞。
我正在尝试使用 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
这会创建一个新频道,在将其传递给任何其他例程之前,它会尝试向该频道发送消息。由于通道是无缓冲的并且没有任何内容从中读取,发送无限期阻塞。