WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(2):C# Actor的尴尬... 阅读

适合C# Actor的消息执行方式(2):C# Actor的尴尬

 2010-09-30 20:50:29 来源:WEB开发网   
核心提示:在上一篇文章中,我们简单解读了Erlang在执行消息时候的方式,适合C# Actor的消息执行方式(2):C# Actor的尴尬,而现在,我们就一起来看看,Erlang大拿,《Programming Erlang》一书的主要译者jackyz同学看了老赵的文章后指出,C# Actor究竟出现了什么样的尴尬,此外

在上一篇文章中,我们简单解读了Erlang在执行消息时候的方式。而现在,我们就一起来看看,C# Actor究竟出现了什么样的尴尬。此外,我还打算用F#进行补充说明,最终我们会发现,虽然F#看上去很美,但是在实际使用过程中依旧有些遗憾。 Erlang中的Tag Message

老赵在上一篇文章里提到,Erlang中有一个“约定俗成”,使用“原子(atom)”来表示这条消息“做什么”,并使用“绑定(binding)”来获取做事情所需要的“参数”。Erlang大拿,《Programming Erlang》一书的主要译者jackyz同学看了老赵的文章后指出,这一点在Erlang编程规范中有着明确的说法,是为“Tag Message”:

5.7 Tag messages

All messages should be tagged. This makes the order in the receive statement less important and the implementation of new messages easier.

Don’t program like this:

loop(State) ->
  receive
    ...
    {Mod, Funcs, Args} -> % Don't do this
      apply(Mod, Funcs, Args},
      loop(State);
    ...
  end.

The new message {get_status_info, From, Option} will introduce a conflict if it is placed below the {Mod, Func, Args} message.

If messages are synchronous, the return message should be tagged with a new atom, describing the returned message. Example: if the incoming message is tagged get_status_info, the returned message could be tagged status_info. One reason for choosing different tags is to make debugging easier.

1 2 3 4 5 6  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接