首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程与线程

进程与线程
EN

Stack Overflow用户
提问于 2008-09-15 13:35:55
回答 5查看 11.1K关注 0票数 24

如何决定是使用线程还是在应用程序中完全创建单独的进程来实现并行性。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-15 13:43:41

线程是更轻量级的,对于仅仅为了利用所有可用的CPU或核心而制造几个“工作者”来说,你最好使用线程。

当您需要工作者更好地隔离和更健壮时,就像大多数服务器一样,使用套接字。当一个线程严重崩溃时,它通常会关闭整个进程,包括在该进程中工作的其他线程。如果一个进程变坏并死亡,它不会触及任何其他进程,因此他们可以愉快地继续他们的业务,就像什么都没有发生一样。

票数 15
EN

Stack Overflow用户

发布于 2008-09-15 14:40:57

进程有更多的隔离内存。这一点很重要,原因有很多:

  • 单个任务很难使其他任务崩溃。
  • 将为每个进程提供更多内存。这对于大型高性能应用程序(如Apache )或数据库服务器(如Postgres )非常重要。这对于分配的内存和内存映射文件都很重要。
票数 5
EN

Stack Overflow用户

发布于 2008-09-15 13:40:36

并行度主要取决于机器上可用的物理处理器/核心。如果你有一台单处理器/核心的机器,那么单独的进程可能会产生太多的开销。在这种情况下,线程通常是首选的。

如果你有多个核心/CPU,那么根据每个进程/线程所做的事情,如果开销合理,你可以选择进程。显然,进程的内存隔离级别要比线程好得多--但同时在Windows中,与线程相比,进程相当繁重。

当然,线程可以在同一进程中共享数据-但同样,您需要同步对共享数据的访问-以防止损坏状态。在进程之间共享数据更复杂,开销(比简单的线程同步更大)取决于所使用的机制,如命名管道、基于自定义套接字的通信、使用远程处理框架、共享文件/数据库等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档