消息传递和方法调用之间是否有区别,或者它们可以被认为是等效的?这可能是特定于语言的;许多语言不支持消息传递(尽管我能想到的所有支持方法),而那些支持的语言可以有完全不同的实现。此外,根据语言(C 与 Java 与 Lisp 与您最喜欢的语言)的不同,方法调用也存在很大差异。我相信这是与语言无关的。你可以用一个传递的方法做什么,而你不能用一个调用的方法做,反之亦然(用你最喜欢的语言)?
最佳答案
它们在实践中确实不是一回事。消息传递是一种在两个或多个并行进程之间传输数据和指令的方法。方法调用是调用子程序的一种方式。 Erlang 的并发是建立在前一个概念之上的,它的面向并发编程。
消息传递很可能涉及某种形式的方法调用,但方法调用不一定涉及消息传递。如果是这样,那将是消息传递。消息传递是在并行进程之间执行同步的一种形式。方法调用通常意味着同步事件。调用者等待方法完成,然后才能继续。消息传递是协程的一种形式。方法调用是子程序的一种形式。
所有的子程序都是协程,但所有的协程都不是子程序。
关于language-agnostic - 消息传递和方法调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562272/