language-agnostic - 消息传递和方法调用有什么区别?

标签 language-agnostic message-passing method-invocation

消息传递和方法调用之间是否有区别,或者它们可以被认为是等效的?这可能是特定于语言的;许多语言不支持消息传递(尽管我能想到的所有支持方法),而那些支持的语言可以有完全不同的实现。此外,根据语言(C 与 Java 与 Lisp 与您最喜欢的语言)的不同,方法调用也存在很大差异。我相信这是与语言无关的。你可以用一个传递的方法做什么,而你不能用一个调用的方法做,反之亦然(用你最喜欢的语言)?

最佳答案

它们在实践中确实不是一回事。消息传递是一种在两个或多个并行进程之间传输数据和指令的方法。方法调用是调用子程序的一种方式。 Erlang 的并发是建立在前一个概念之上的,它的面向并发编程。

消息传递很可能涉及某种形式的方法调用,但方法调用不一定涉及消息传递。如果是这样,那将是消息传递。消息传递是在并行进程之间执行同步的一种形式。方法调用通常意味着同步事件。调用者等待方法完成,然后才能继续。消息传递是协程的一种形式。方法调用是子程序的一种形式。

所有的子程序都是协程,但所有的协程都不是子程序。

关于language-agnostic - 消息传递和方法调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562272/

相关文章:

algorithm - 高维数据中的最近邻?

language-agnostic - Code Golf : Lasers

java - 建议将 Handler 与 EventBus/Otto 一起使用?

java - 通过java中的反射调用具有无限循环的方法

c# - 在 if 语句中使用方法调用程序

language-agnostic - 二维空间中生长圆的有效表示?

parsing - 是否存在左关联前缀运算符或右关联后缀运算符之类的东西?

javascript - chrome扩展加载外部js

Erlang工作进程