
func main() {
rand.Seed(time.Now().Unix())
ctx, cancelFunc := context.WithCancel(context.Background())
anies := make(chan any)
go doSomething(ctx, anies)
intn := rand.Intn(2)
if intn == 0 { //BRANCH1
cancelFunc()
close(anies)
}
time.Sleep(time.Second)
}
func doSomething(ctx context.Context, anies chan any) {
for {
if ctx.Err() == nil { //LINE2
anies <- 1 //LINE3
}
}
}有没有可能,当 branch1 发生在 line2 和 line3 之间时,我会感到恐慌。
是的,恐慌是可能的。以下是发生恐慌的时间线示例。这些行按时间递增顺序排列。 N: 前缀代表 goroutine。
PHP是程式语言、MySQL是资料库,要学好任何一种都不是件容易的事,而我们,还要将它做出成果出来!很难吗?不会的!有好的方法、好的流程,其实是可以很轻松的学会,并且应用在网页上的。 书里所介绍的是观念、流程,一个步骤一个步骤依照需求,就可以做出我们要的结果,不怕做不出来,希望藉由这本书,可以让你将这些观念实现在你的网站里。 PHP & MySQL的学习,只要有正确的观念、正确
442
1:启动协程2
2:调用ctx.Err(),它返回nil
1:调用cancelFunc()
1:关闭通道anis
2:发送到aniy频道。恐慌,因为通道已关闭。
以上就是这里可能会出现恐慌吗?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号