【问题标题】:Which is better choice for browser's tab: multi-thread or multi-process? [closed]浏览器选项卡哪个更好:多线程还是多进程? [关闭]
【发布时间】:2011-05-14 20:52:20
【问题描述】:

我想知道在 Web 浏览器中实现选项卡的更好选择是什么? (例如:Firefox 的标签使用多线程,而 Google Chrome 使用多进程......)

【问题讨论】:

  • 您可能想让问题显得不那么主观。浏览器中线程/进程标签分离的优缺点是什么,可能名字就不提了……
  • 注意,Firefox 正在处理implementingthis。
  • @Matthew Flaschen:谢谢你,Matthew,这就是我要找的。似乎 chrome 在一般使用方面领先于 Firefox,因为它的稳定性和其他东西......
  • @tsubasa:几乎没有...... Firefox 是一款史诗般的浏览器,目前比 Chrome 稳定得多。从两者的粉丝那里拿走它。
  • 为什么这听起来像个骗子……

标签: c multithreading browser process


【解决方案1】:

这取决于您的实施质量和您的优先事项。线程有可能使用更少的内存/更多的共享,并且可能比进程执行得更好或更差,具体取决于您使用的同步原语。另一方面,由于浏览器实现的质量非常糟糕,你真的希望整个浏览器和所有选项卡在一个坏网站欺骗浏览器分配无限量或更糟的内存时崩溃吗?

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

【讨论】:

    【解决方案2】:

    这取决于您的需求。

    如果你是

    • 寻找资源最少的浏览器
    • 没有运行繁重的 javascripts
    • 内存不足

    那么您可能会使用多线程。

    但是,如果你是

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

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

    【讨论】:

      【解决方案3】:

      答案:这是一种权衡。

      线程:无论如何,在 Windows 上通常是最好的。进程是这些系统上的资源消耗型实现。

      流程:如果安全/稳定性是主要关注点,则很好。因为一个进程宕机导致整个浏览器宕机的可能性要小得多。 (但为什么要预期浏览器会崩溃?)并且使用操作系统原语更容易安全隔离,以更多系统资源为代价(多少取决于操作系统)。

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

      【讨论】:

      • 那么现在哪些浏览器使用线程?
      • 所有的人......很快他们也都使用多个进程,成为混合体。例如,每个 chrome 选项卡都在一个单独的进程中运行,由大约 11-15 个线程组成......
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        嗯,我认为每次我们打开一个新标签时,它都会创建一个线程,这是有益的,因为线程不需要另一个资源,也不会使用更多内存,您的系统不会受到更大的影响。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-14
            • 2019-03-12
            • 2015-12-27
            • 2023-01-14
            • 2015-04-09
            相关资源
            最近更新 更多