使用基于多个流程的并发模型的主要优势是什么
基于线程,后者在什么情况下合适?
最佳答案
容错和可伸缩性是使用“进程与线程”的主要优点。
依赖共享内存或仅在使用线程时可用的某种其他技术的系统,在要在多台计算机上运行该系统时将无用。迟早您将需要在不同的流程之间进行交流。
例如,在使用进程时,您不得不通过消息来处理通讯,这就是Erlang处理通讯的方式。不共享数据,因此没有数据损坏的风险。
进程的另一个优点是它们可能崩溃,并且您可以重启(即使跨网络主机),因此您会感到相对安全。但是,如果线程崩溃,则可能会使整个过程崩溃,这可能会导致整个应用程序崩溃。举例说明:如果Erlang进程崩溃,则只会丢失该电话或Web请求等。不会丢失整个应用程序。
综上所述,OS进程还具有许多缺点,这些缺点可能会使它们变得更难使用,例如,需要永久地产生一个新进程这一事实。但是,Erlang拥有自己的过程概念,这些过程非常轻量级。
话虽如此,这个讨论实际上是研究的主题。如果您想了解更多细节,可以阅读Joe Armstrong关于容错系统的论文1,它对Erlang及其驱动原理进行了很多解释。
关于multithreading - 并发: Processes vs Threads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315292/