哪个是浏览器选项卡的更好选择:多线程还是多进程?

时间:2010-11-24 03:05:33

标签: c multithreading browser process

我想知道哪个是在Web浏览器中实现标签的更好选择? (例如:Firefox使用多线程作为其标签,而Google Chrome则使用多进程...)

6 个答案:

答案 0 :(得分:22)

这取决于您的实施质量和优先级。线程有可能使用更少的内存/共享,并且可能比根据您使用的同步原语更好或更差地执行。另一方面,由于浏览器实现的完全垃圾质量,当一个糟糕的网站欺骗浏览器分配无限量的内存或更糟糕的时候,你真的希望整个浏览器和所有标签崩溃吗?

多进程浏览器实现很像OpenSSH,vsftpd等中的权限分离模型。您牺牲了一些资源让内核保护您免受代码中的错误。

答案 1 :(得分:18)

这取决于您的需求。

如果你

  • 寻找资源最小化浏览器
  • 没有运行沉重的javascripts
  • 没有大量内存

然后你可能会选择多线程。

但是,如果你是

  • 一次运行多个页面
  • 运行资源密集型Web应用程序

您可能想要多进程。由于目前大多数计算机和Web应用程序都属于第二类,因此Multi-Process可能是今天更好的选择。这是因为进程允许您在其自己的沙箱中分隔每个选项卡。这意味着如果一个选项卡崩溃,您将不会丢失其他选项卡。

答案 2 :(得分:2)

你是什么意思,'这是一个更好的选择'?在讨论为什么一个比另一个更好之前,你必须定义“更好”。你的目标是什么,他们的相对优先事项是什么?哪个最重要,稳定性,内存使用率,CPU时间,正在使用的内核对象数量?您想要的答案将要求您首先提供这些优先级。也就是说,在我们帮助您确定哪个更好之前,您需要定义“更好”的内容。

答案 3 :(得分:2)

答案:这是一种权衡。

主题:在Windows上通常最好无论如何。进程是这些系统上资源匮乏的实现。

流程:如果安全性/稳定性是主要问题,那就很好。因为一个进程停止运行的可能性要小得多。 (但是为什么浏览器应该崩溃?)并且更容易使用操作系统原语安全地隔离,,代价是系统资源更多(多少取决于操作系统)。

混合:AKA使用进程和线程。这是最好的方法。使用线程加载一定数量的组件,直到进程变得足够大以证明另一个进程的额外开销(取决于操作系统),然后创建另一个进程。

答案 4 :(得分:-1)

我认为每次打开一个新选项卡时,它都会创建一个线程,并且它是有益的,因为线程不需要其他resoces,也不会使用更多内存,系统spped也不会受到更多影响。

答案 5 :(得分:-2)

我认为多进程是一种更好的方法。在多线程中存在安全问题,我们不希望有人窃取我们的信用卡号。如果一个进程变慢,由于整个浏览器崩溃,没有意义。如果我们的浏览器非常特定于某些应用程序(如仅限研究),它仅处理互联网的一个子集,我们可以分析基于进程和线程的浏览器的优缺点。多线程浏览器肯定可以快速轻松地同步。