多进程服务器或多线程服务器?

时间:2012-03-14 10:58:58

标签: c multithreading multiprocessing

我在C中编写一个简单的客户端服务器。制作多进程服务器而不是多线程服务器有什么好处?

2 个答案:

答案 0 :(得分:1)

如果不了解您的平台,就无法真实地回答这个问题。

谣言表明,在Windows上启动新进程非常昂贵,但启动新线程几乎是免费的。因此,如果性能是唯一的考虑因素,Windows环境更喜欢线程。

在Linux上,线程被实现为新进程的稍微特殊的案例变体。他们几乎都是自由的。选择能够长期获得最佳代码的那个。

在其他平台上,线程可能更昂贵 - 或者可能无法使用多个处理器。在这些平台上,选择流程。

当然,这不仅仅是纯粹的表现。对于shared-nothing designs有一些非常的好处 - 如果从程序中删除所有共享数据,则可以大大减少同时访问这些数据结构的代码段中的错误。此外,由于进程不共享运行时内存,因此破坏一个进程的攻击者可能无法控制其他进程。 (或者,它可能更难。)线程只会让攻击者阅读它想要的任何内容。

答案 1 :(得分:0)

制作多进程服务器而不是多线程服务器的优点:

每个进程的受保护内存空间可防止一个进程内存与另一个进程内存的意外损坏。

制作多进程服务器而不是多线程服务器的缺点:

每个进程的受保护内存空间阻止了一个进程与另一个进程之间所需的直接通信。

看看你的要求,选择......