Erlang:何时使用函数与进程?

Erlang:何时使用函数与进程?,erlang,idioms,Erlang,Idioms,我的任务是处理zip文件中的文件。因此,我编写了一组独立的函数,并将它们组合起来以获得所需的结果。这是做事的一种方式。现在,我没有把它们全部写成函数,而是把它们中的一些写成带有选择性接收和全部的进程,一切都很酷。但是再进一步思考一下,我想,我们需要函数吗?我不能将所有这些函数替换或转换为与自身和其他进程通信的进程吗?所以我有怀疑。何时使用函数,何时使用流程?从性能的角度来看,使用诸如缓存之类的功能有什么优势吗?进程中的代码块不是以类似方式得到缓存吗 那么在我们的示例中,标准的惯用语是什么呢?下面

我的任务是处理zip文件中的文件。因此,我编写了一组独立的函数,并将它们组合起来以获得所需的结果。这是做事的一种方式。现在,我没有把它们全部写成函数,而是把它们中的一些写成带有选择性接收和全部的进程,一切都很酷。但是再进一步思考一下,我想,我们需要函数吗?我不能将所有这些函数替换或转换为与自身和其他进程通信的进程吗?所以我有怀疑。何时使用函数,何时使用流程?从性能的角度来看,使用诸如缓存之类的功能有什么优势吗?进程中的代码块不是以类似方式得到缓存吗

那么在我们的示例中,标准的惯用语是什么呢?下面是当前的伪代码

start() ->
  FL = extract("..path"),
  FPids = lists:map(open_file, FL), %  get file Pids,
  lists:foreach(fun(FPid) ->
                  CPid = spawn_compute_process(),
                  rpc(CPid,{compute,FPid}) 
                end, FPids).

compute() ->
  receive
    {Pid,{..}} ->
      Line = read_line(..),
      TL = tidy_line(Line), % an independent function. But couldn't it be a guard within this process?
    ..
  end.

extract(FilePath) -> FilesList.

read_line(FPid) -> line.  
那么您实际上是如何编写代码的呢?比如,先编写较小的独立函数,然后将它们封装到进程中?
谢谢。

简而言之,您可以使用进程来利用并发性。将函数替换为顺序运行一个进程的进程,然后将其值发送给另一个进程,该进程执行其工作并将其结果发送给下一个进程等。每个进程在完成其位后终止都是对进程的错误使用。在这里,您只是通过将数据从一个进程发送到另一个进程而不是调用函数来按顺序评估某些内容

但是,如果您希望此进程链能够同时处理多个调用序列,那么这是另一回事。然后,您将使用进程来实现并发性。在erlang中,更通用的方法是为每个序列创建一个单独的进程,并以这种方式利用并发性


进程的另一个用途是管理状态。

简而言之,就是使用进程来利用并发性。将函数替换为顺序运行一个进程的进程,然后将其值发送给另一个进程,该进程执行其工作并将其结果发送给下一个进程等。每个进程在完成其位后终止都是对进程的错误使用。在这里,您只是通过将数据从一个进程发送到另一个进程而不是调用函数来按顺序评估某些内容

但是,如果您希望此进程链能够同时处理多个调用序列,那么这是另一回事。然后,您将使用进程来实现并发性。在erlang中,更通用的方法是为每个序列创建一个单独的进程,并以这种方式利用并发性

流程的另一个用途是管理状态