Day 14 读 Go Concurrency Patterns - Rob Pike I

本篇是看 Go Concurrency Patterns 的心得


简报网址:https://talks.golang.org/2012/concurrency.slide

在影片的前段,在稍微提到了 concurrency 和 parallism ,这里大部分的内容和 Concurrency is not Parallelism 有重叠的部分,Day6 到 Day10 也写过这篇演讲的内容,这篇我就不多提

以下我会从投影片里的 Pattern 开始

Generator pattern

Rob Pike 在这提到,这里的 Pattern 和 OOP 的 Pattern 不一样,这里只是,只是想给出一些 concurrency 的例子
在 function 内部回传一个 receive-only channel,从外部看来就是提供一个 generator

这时就能把这个 function 当成一个服务一样,可以提供给多个人,但这个程序会有一些问题,Joe 和 Ann 一定会是 Joe 先印出来然後再换 Ann,这就不符合预期:要是 Ann 可能已经 ready 好要接收值了,但是他还是一定要等 Joe ready 好了才能轮到他。

Joe 0
Ann 0
Joe 1
Ann 1
Joe 2
Ann 2
Joe 3
Ann 3
Joe 4
Ann 4

Fan in pattern

我们可以写一个 Fan in function 或是称它为 Multiplexer。谁先的 channel 先 ready 了,就先印,这就解决刚刚的问题了。

来个示意图

到下一页讲解时我就卡住了,看了一下子没看懂,今天就先这样吧


<<:  Day 13 - Spread Operator & Rest Operator

>>:  Google无法移除侵权网址127.0.0.1

【设计+切版30天实作】|Day21 - PainPoints - 怎麽切出标题底下的highlight 装饰?

大纲 昨天完成header的部分了,所以接下来就会进入main的部分,今天要完成的是「PainPoi...

【Day14-字串】浅谈python中最常用到的str处理方式——格式化、寻找、取代、分割、合并

在资料处理的过程中,我们最常会面对的不外乎四种类型 数值 文字 影像 音讯 因此接下来几天会稍微针对...

Day3 专案成本的估算(精神与方法)

好吧,昨天是有点扯淡,不过要真正学习近平大撒币,你可能不用开启一带一路的「项目」,你只需要够勇敢,比...

第07天 - 一些些的 MySQL(下)

把昨天没讲完的 MySQL 操作补充一下 实作的时候记得打开 XAMPP。 更动资料"表&...

[Day09] 第九章-Laravel 操作心得及资料来源补充

前言 经过昨天一连串得技术 跟程序轰炸 今天想分享一些使用laravel的心得 并且总结昨天的技术 ...