package main
import (
"fmt"
"mime/multipart"
"bytes"
)
var channel chan string = make(chan string)
func recognize(file_path string) {
body_buf := &bytes.Buffer{}
fmt.Println(body_buf)
send_writer := multipart.NewWriter(body_buf)
fmt.Println(send_writer)
}
func loop() {
for i := 0; i < 10; i++ {
channel <- "dd"
}
}
func main() {
go loop()
for v := range channel {
fmt.Println(len(channel), v)
}
}
程序不会停止,即使我不调用recognize
函数,我也不知道为什么,怎么解释
当我删除
时 send_writer := multipart.NewWriter(body_buf)
程序将停止并出现致命错误:死锁
有什么不同,谁能告诉我
答案 0 :(得分:0)
该程序不会停止,因为您永远不会关闭通道,因此在它上面的范围循环不会终止。关闭loop
中的频道,如
func loop() {
for i := 0; i < 10; i++ {
channel <- "dd"
}
close(channel)
}
它应该停止。