发生死锁的go routine代码

来源:互联网 发布:绿色加密软件 编辑:程序博客网 时间:2024/05/04 03:31
package mainimport("fmt"_"strings")type PullReqMsg struct{name string//num int}type hauler struct{Pullch chan *PullReqMsgtopic string}func(h *hauler)Loop() {fmt.Println("run Loop")for{select{case request := <-h.Pullch: fmt.Println("receive channel...") request.name = "clk" break}}}func main(){var worker haulerworker.topic = "kcl"worker.Pullch = make(chan *PullReqMsg)req_msg := new(PullReqMsg)fmt.Println("heer")worker.Pullch<-req_msg//fmt.Println(req_msg.name)go worker.Loop()req_msg.name = "cl-k"name := req_msg.namefmt.Println(name)}


正常代码:

package mainimport("fmt"_"strings")type PullReqMsg struct{name string//num int}type hauler struct{Pullch chan *PullReqMsgtopic string}func(h *hauler)Loop() {fmt.Println("run Loop")for{select{case request := <-h.Pullch: fmt.Println("receive channel...") request.name = "clk" break}}}func main(){var worker haulerworker.topic = "kcl"worker.Pullch = make(chan *PullReqMsg)req_msg := new(PullReqMsg)fmt.Println("heer")name0 := req_msg.namefmt.Println(name0)go worker.Loop()worker.Pullch<-req_msg//fmt.Println(req_msg.name)//req_msg.name = "cl-k"name := req_msg.namefmt.Println(name)}





0 0
原创粉丝点击