当前位置:  开发笔记 > 编程语言 > 正文

为什么这个erlang代码不起作用?

如何解决《为什么这个erlang代码不起作用?》经验,为你挑选了2个好方法。

在你的conFib中你发送一个整数,但等待rpc中的元组.应该改为:

conFib()->
       receive
               {Client,N} -> Client ! {self(), regfib(N)}
       end.

您可以通过after在收到中使用超时来规避这种情况.



1> Zed..:

在你的conFib中你发送一个整数,但等待rpc中的元组.应该改为:

conFib()->
       receive
               {Client,N} -> Client ! {self(), regfib(N)}
       end.

您可以通过after在收到中使用超时来规避这种情况.



2> Rickard..:

要使计算平行,您可以执行以下操作:

fib(N)->
       P1 = spawn(fun test:conFib/0),
       P2 = spawn(fun test:conFib/0),
       P1 ! {self(), N - 2},
       P2 ! {self(), N - 1},
       receive
         {_, R1} -> R1
       end,
       receive
         {_, R2} -> R2
       end,
        R1 + R2.

重要的是你在等待答案之前发送两个请求.等待答案的部分当然可以以更美丽的方式完成.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有