如何决定是使用线程还是在应用程序中完全创建单独的进程来实现并行性。
发布于 2008-09-15 13:43:41
线程是更轻量级的,对于仅仅为了利用所有可用的CPU或核心而制造几个“工作者”来说,你最好使用线程。
当您需要工作者更好地隔离和更健壮时,就像大多数服务器一样,使用套接字。当一个线程严重崩溃时,它通常会关闭整个进程,包括在该进程中工作的其他线程。如果一个进程变坏并死亡,它不会触及任何其他进程,因此他们可以愉快地继续他们的业务,就像什么都没有发生一样。
发布于 2008-09-15 14:40:57
进程有更多的隔离内存。这一点很重要,原因有很多:
发布于 2008-09-15 13:40:36
并行度主要取决于机器上可用的物理处理器/核心。如果你有一台单处理器/核心的机器,那么单独的进程可能会产生太多的开销。在这种情况下,线程通常是首选的。
如果你有多个核心/CPU,那么根据每个进程/线程所做的事情,如果开销合理,你可以选择进程。显然,进程的内存隔离级别要比线程好得多--但同时在Windows中,与线程相比,进程相当繁重。
当然,线程可以在同一进程中共享数据-但同样,您需要同步对共享数据的访问-以防止损坏状态。在进程之间共享数据更复杂,开销(比简单的线程同步更大)取决于所使用的机制,如命名管道、基于自定义套接字的通信、使用远程处理框架、共享文件/数据库等。
https://stackoverflow.com/questions/62921
复制相似问题