作家
登录

可视化学习 Go并发编程

作者: 来源: 2017-11-10 12:32:08 阅读 我要评论

两个玩家

可视化进修 Go并发编程

看一下效不雅(复制链接 http://talks.bingohuang.com/2017/go-concurrency-visualize/pingpong2.html 到浏览器中打开)

可视化进修 Go并发编程

可视化进修 Go并发编程

建议在PC端浏览器上打开膳绫擎的链接,可以和 WebGL 动画交互,玩玩看。你可以放慢、加快,大年夜不合的角度不雅察它。

三个玩家

膳绫擎是常见的2个乒乓球活动员对打的过程,如不雅是三个活动员会是什么样呢?如今,让我们来运行 3 个活动员的尝尝看。代码中只要做少量的修改,添加一个 player 即可:

可视化进修 Go并发编程

效不雅如下:(复制链接 http://talks.bingohuang.com/2017/go-concurrency-visualize/pingpong3.html 到浏览器中打开)

可视化进修 Go并发编程

让我们看一个更复杂的例子,跑36个活动员看看。

可视化进修 Go并发编程

效不雅(复制链接http://talks.bingohuang.com/2017/go-concurrency-visualize/pingpong36.html 在浏览器中打开)

可视化进修 Go并发编程

在这里我们看到每个活动员都是轮流依次进行,你可能会想为什么是如许?为什么接球的 goroutine 会按照这么严格的次序?

谜底是因为 Go 运行时给接收者(预备大年夜特定的 channel 接收消息的 goroutines)保持一个先辈先出(FIFO)的队列,同时在我们的例子中,每一个活动员正好在他将球打到桌子上的时刻就做好预备。

经由过程关键字 go 来创建 goroutine,如下说是

4.素数筛

膳绫擎几个例子比较简单,让我们来看一个更复杂的并发算法:素数筛算法,又叫埃拉托斯特尼算法,是一种古老的算法,用于 找到小于或等于给定整数n 的素数。算法核心思惟:先用最小的素数2去筛,把2的倍数剔除掉落;下一?未清除的数就是素数(这里是3)。再用这个素数3去筛,清除掉落3的倍数... 如许赓续反复下去,直到筛完为止。

可视化进修 Go并发编程

异常漂亮的算法,特别是在 3D 图像下。

这个算法的并发变更是用 goroutines 来过滤数字 —— 一个 goroutine 发明一个素数,而 channels 用来把数字大年夜 generator 传递到 filter。当一个素数被找到了,就会经由过程 channel 传递给 main,再输出。

当然,这个算法并不会异常高效,特别是在你想找大年夜量的素数,并且寻找最低的大年夜 O 复杂度时,但这个算法确异常的优雅。

可视化进修 Go并发编程

大年夜家可以看一下可视化的样子(http://talks.bingohuang.com/2017/go-concurrency-visualize/primesieve.html)

可视化进修 Go并发编程

可以在交互模式中体验一下该动画。它的图形化方法确切能更好的赞助我们懂得算法。该 generate 函数 goroutine 大年夜 2 开端发出每一个整数。而每一个新的 filter 函数 goroutine 会过滤特定素数的倍数 - 2,3,5,7……每一个 filter 的第一个数就是素数,将它发送给 main 函数,并输出。如不雅你扭转图像自顶向下看的话,你会发明,所有大年夜 goroutine 发送给 main 的数字就是素数。

5.其他-Goroutines 泄漏

固然说Goroutine是一个很轻量线程,不该该浪费它的。假设有 N 多个Goroutine泄漏了会怎么样?

可视化进修 Go并发编程

效不雅见http://talks.bingohuang.com/2017/go-concurrency-visualize/leak.html

可视化进修 Go并发编程


  推荐阅读

  iPhone X操作变得更复杂:苹果无奈但坚定

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 很难说进修曲线的进步会“吓走”若干人,但至少如今没有太大年夜的不满之声,iPhone X的高利润>>>详细阅读


本文标题:可视化学习 Go并发编程

地址:http://www.17bianji.com/lsqh/38725.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)