了解Rob Pike的书籍焚烧实例

时间:2015-04-11 23:03:07

标签: concurrency go parallel-processing

在Rob Pike的2012年演讲中,Concurrency is not Parallelism (it's better),他有一组正在运行的例子,一群地鼠共同努力焚烧一堆书。

在幻灯片15(video 6:58)上,有三个地鼠在工作:

  1. 将书从一堆装入购物车。
  2. 将装满的推车移动到焚烧炉(然后返回空车)。
  3. 将书从推车移入焚烧炉。
  4. 3 gophers working together to burn books

    slide 16上,有四位地鼠在同一个问题上合作:

    1. 从书堆装载书籍(如前所述)。
    2. 将装满的推车移动到焚烧炉。
    3. 将书籍从推车移入焚化炉(如前所述)。
    4. 将空车移回堆中。
    5. 4 gophers working together to burn books 派克说,这会带来更多的工作,但会更快。为什么?这似乎是相同数量的工作,由更多的地鼠共享。

3 个答案:

答案 0 :(得分:3)

诀窍在于,不仅有一个推车,还有多个推车。一个被填充,一个被移动到焚化炉,被清空到焚烧炉,一个被从焚烧炉移回。这意味着每个地鼠应该(只要事情合理,每个任务的完成时间相对相似)总是很忙。

答案 1 :(得分:1)

假设携带加载购物车的地鼠必须在从购物车中取出书籍后进行某种清理或通讯。现在他可以做那个另一个gopher带回购物车。因此,装载地鼠不必等待购物车返回的时间。

答案 2 :(得分:1)

考虑购物车装载的往返行程。

在第一种情况下,我们有:

  • 将装满的推车移动到焚烧炉(然后返回空车)。

那是:

  • Gopher 1:将装满的推车移至焚烧炉。

  • Gopher 1:将空车移回堆中。

在第二种情况下,我们有:

  • 将装满的推车移动到焚烧炉。

  • 将空车移回堆中。

那是:

  • Gopher 1:将装满的推车移至焚烧炉。

  • Gopher 1:没有推车,回到堆里。

  • Gopher 2:将空车移回堆中。

  • Gopher 2:没有推车就回到焚化炉。

虽然我们有额外的工作,但由于几个原因,例如分工,它可能会运行得更快。

  

劳动分工

     

举一个例子,从一个非常微不足道的制造,但是   经常分别注意到劳动分工的劳动   一个销售商的交易:一个没有受过这项业务教育的工人   (劳动分工已经产生了独特的贸易),也没有   熟悉使用其中使用的机器(对   可能给予相同分工的发明   或许,或许,与他最大的行业,制造一个   在一天之内,肯定不能二十。但顺便说一下   这项业务现在进行,不仅整个工作是一个   特殊的贸易,但它分为若干分支,其中   更大的部分同样是特殊的交易。一个人拔出了   线;另一个直道呢;第三个削减它;第四点指出;一个   第五个人在顶部研磨它以接收头部;做头   需要两到三次不同的操作;穿上它是一个奇特的   商业;美白别针是另一个;它本身甚至是一种交易   把它们写进纸上;以及制作销钉的重要业务   以这种方式,分为大约十八个不同的操作,   在某些制造商中,这些都是由不同的手完成的,   虽然在其他人中同一个男人有时会表演两三个   他们。我见过这种小型工厂,只有十个人   被雇用,其中一些人因此执行了两次或两次   三个不同的操作。但是,虽然他们非常贫穷,而且   因此,无动于衷地容纳必要的机器,   当他们施展自己时,他们可以在他们中间制造大约十二个   一天的磅数。有四千英镑以上   中等大小的针脚。因此,这十个人可以做到   其中一天内有超过四万八千个针脚。每个人,   因此,制作四万八千针的十分之一可能是   被认为是一天制作四千八百个别针。但如果   他们都是分开独立地进行的,而且没有任何一个   他们当然受过这种特殊事业的教育   他们每个人都不可能在一天内制造二十个,也许不是一个销钉;   那当然不是二百四十,也许不是   四千八百,是他们目前的一部分   能够执行,由于适当的分裂和   结合他们不同的业务。

     

An Inquiry into the Nature and Causes of the Wealth of Nations, Adam Smith, 1776.