这篇文章主要讲解了“Go语言中管理Concurrency的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言中管理Concurrency的方式有哪些”吧!先来了解有什么情境需要使用到 WaitGroup
,假设您有两台机器需要同时上传最新的代码,两台机器分别上传完成后,免费云主机域名才能执行最后的重启步骤。就像是把一个工作同时拆成好几份同时一起做,可以减少时间,但是最后需要等到全部做完,才能执行下一步,这时候就需要用到 WaitGroup
才能做到。另外一种实际的案例就是,我们需要主动通知一个 Goroutine
进行停止的动作。换句话说,当 App 启动时,会在后台跑一些监控程序,而当整个 App 需要停止前,需要发个 Notification
给后台的监控程序,将其先停止,这时候就需要用到 Channel
来通知。看下下面这个例子:上面的例子可以发现,用了一个 Gogourtine
和 Channel
来控制。可以想像当后台有无数个 Goroutine
的时候,我们就需要用多个 Channel
才能进行控制,也许 Goroutine
内又会产生 Goroutine
,开发者这时候就会发现已经无法单纯使用 Channel
来控制多个 Goroutine
了。这时候解决方式会是传递 Context
。大家可以想像,今天有一个后台任务 A,A 任务又产生了 B 任务,B 任务又产生了 C 任务,也就是可以按照此模式一直产生下去,假设中途我们需要停止 A 任务,而 A 又必须告诉 B 及 C 要一起停止,这时候通过 context
方式是最快的了。大家可以把 context
想成是一个 controller
,可以随时控制不确定个数的 Goroutine
,由上往下,只要宣告context.WithCancel
后,再任意时间点都可以通过cancel()
来停止整个后台服务。实际案例会用在当 App 需要重新启动时,要先通知全部 goroutine
停止,正常停止后,才会重新启动 App。感谢各位的阅读,以上就是“Go语言中管理Concurrency的方式有哪些”的内容了,经过本文的学习后,相信大家对Go语言中管理Concurrency的方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!
这篇文章主要介绍了前端中怎么引入Bootstrap框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们需要前往 Bootstrap 官网下载 Bootstrap 文件包。如果需要使用相关 JS…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。