无缓冲区的注意事项
參考代碼
func main(){// 錯誤寫法// ch1 := make(chan string)// ch1 <- "test"// // 沒有緩沖區(qū),就會一直阻塞,寫不進(jìn)去,生產(chǎn)者和消費(fèi)者要其中一個一定要放在協(xié)程中// data,ok = <- ch1// // 不行// if ok{// fmt.Println("接收成功",data)// }else{// fmt.Println("接收失敗")// }// 正確寫法ch1 := make(chan string)go func(){ch1 <- "消費(fèi)者和生產(chǎn)者其必須有一個放在協(xié)程里面"defer close(ch1)}()select{//阻塞case v,ok:= <- ch1:if ok{fmt.Println("無緩沖區(qū)輸出值",v)}else{fmt.Println("無法讀取無緩沖區(qū)的值")}} }輸出結(jié)果
無緩沖區(qū)輸出值 消費(fèi)者和生產(chǎn)者其必須有一個放在協(xié)程里面總結(jié)
對于無緩沖區(qū)的管道,生產(chǎn)者和消費(fèi)者必須有一個放在協(xié)程中。
轉(zhuǎn)載于:https://www.cnblogs.com/MyUniverse/p/11578320.html
總結(jié)
- 上一篇: defer func(参数){}
- 下一篇: OPGL+GLFW+GLEW配置详细步骤