记录一个channel的用法,感觉挺有意思的。
package main
import (
"fmt"
"time"
)
type SomeStr struct {
val int
process chan struct{}
}
func SendTask(taskCh chan SomeStr) {
done := make(chan struct{})
taskCh <- SomeStr{val: 100, process: done}
fmt.Println("waitting done")
<-done
fmt.Println("task is over")
}
func main() {
taskCh := make(chan SomeStr)
go SendTask(taskCh)
for {
select {
case v := <-taskCh:
fmt.Println("recv val:", v.val)
close(v.process)
time.Sleep(time.Second)
return
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。