Multithreading google chrome有多个进程,UI线程呢?

Multithreading google chrome有多个进程,UI线程呢?,multithreading,user-interface,Multithreading,User Interface,我总是阅读和处理一个UI线程,因为有多个UI线程会破坏消息传输等 我在这里回答我自己的问题,但我想验证我对Chrome浏览器的理解,Chrome浏览器有多个进程(每个选项卡一个进程)——它是否也通过使用多个UI线程来加速渲染部分的速度 我的猜测是没有,但如果有,了解或查看一些示例c#代码来演示相同的代码(不一定是web浏览器演示)将非常有趣 多UI线程方向上的任何指针都会有帮助!谢谢。不要混淆线程和进程。每个进程都有自己的ui线程,但也可能有自己的消息泵。不要混淆线程和进程。每个进程都有自己的u

我总是阅读和处理一个UI线程,因为有多个UI线程会破坏消息传输等

我在这里回答我自己的问题,但我想验证我对Chrome浏览器的理解,Chrome浏览器有多个进程(每个选项卡一个进程)——它是否也通过使用多个UI线程来加速渲染部分的速度

我的猜测是没有,但如果有,了解或查看一些示例c#代码来演示相同的代码(不一定是web浏览器演示)将非常有趣


多UI线程方向上的任何指针都会有帮助!谢谢。

不要混淆线程和进程。每个进程都有自己的ui线程,但也可能有自己的消息泵。

不要混淆线程和进程。每个进程都有自己的ui线程,但也可能有自己的消息泵。

我无法确切说明Chrome如何处理渲染线程-但我假设每个选项卡都有自己的渲染线程。我看不出将所有选项卡隔离的过程都进行到底有什么意义,而只是将它们全部绑定在一个公共渲染线程上。他们都有机会互相干涉

我使用WPF实现了一个“chrome风格”浏览器——应用程序外壳是一个单独的进程,然后每个“选项卡”都是一个MAF插件,在单独的进程中运行。渲染都在子进程中-没有共享内容。每个加载项都返回一个INativeHandleContract(WPF控件),该控件通过进程边界传递

这样做的结果是,子选项卡中任何位置的异常只会取下该选项卡,并且可以被父进程检测到,从而使其有机会提供一些反馈/重新加载该选项卡等

当我完成此文档时,它并不存在,但快速浏览后,我认为它有一些要点:

肯特·布加特也伸出了援助之手

您可能还需要Microsoft的此QFE来修复在跨进程边界传递WPF控件时可能遇到的序列化错误:
关于MS Connect错误:

我无法明确说明Chrome如何处理渲染线程,但我假设每个选项卡都有自己的渲染线程。我看不出将所有选项卡隔离的过程都进行到底有什么意义,而只是将它们全部绑定在一个公共渲染线程上。他们都有机会互相干涉

我使用WPF实现了一个“chrome风格”浏览器——应用程序外壳是一个单独的进程,然后每个“选项卡”都是一个MAF插件,在单独的进程中运行。渲染都在子进程中-没有共享内容。每个加载项都返回一个INativeHandleContract(WPF控件),该控件通过进程边界传递

这样做的结果是,子选项卡中任何位置的异常只会取下该选项卡,并且可以被父进程检测到,从而使其有机会提供一些反馈/重新加载该选项卡等

当我完成此文档时,它并不存在,但快速浏览后,我认为它有一些要点:

肯特·布加特也伸出了援助之手

您可能还需要Microsoft的此QFE来修复在跨进程边界传递WPF控件时可能遇到的序列化错误:
关于MS Connect错误:

线程不提供任何隔离。您无法从一个线程捕获异常并恢复进程。这是正确的-这就是为什么我的代码“每个“tab”都是一个在单独进程中运行的MAF加载项”-允许对未处理的异常进行类似chrome的恢复。线程不提供任何隔离。你不能从一个线程捕获异常并继续进程。这是正确的-这就是为什么我的代码有“每个'选项卡'是一个MAF加载项在单独的进程中运行”-允许类似chrome的弹性来应对未处理的异常。是的,我在概念上同意。google chrome整合其所有功能的方式使其更加有趣。如果每一个进程之间都有协调,如果它拥有一个UI线程等等,那么问题就来了。是的,我在概念上同意。google chrome整合其所有功能的方式使其更加有趣。如果每个进程之间都有一个进程进行协调,并且它也拥有一个UI线程等等,那么问题就来了。