2011-11-09 3 views
0

私はいつも読んで、以上の1つを有することから、単一のUIスレッドをオフに働いていたなどなど、私はここで自分の質問に答えるのですGoogle Chromeには複数のプロセスがありますが、UIスレッドはどうですか?

をポンプメッセージを台無しになるだけに知られているChromeブラウザ上の私の理解を検証したいしています複数のプロセス(タブごとに1つ)を持っている - 複数のUIスレッドを使用することによってレンダリング部分のビットも加速しますか?

私の推測はそうではありませんが、もしそうなら、それをデモするためにいくつかのサンプルC#コードを知っているか見てみるのは非常に面白いでしょう(Webブラウザのデモである必要はありません)。

複数のUIスレッド方向のポインタがあれば役立ちます。ありがとう。

答えて

2

スレッドとプロセスを混同しないでください。各プロセスには独自のUIスレッドがありますが、それ自体のメッセージポンプである可能性もあります。

+0

ええ、私は概念的に同意シリアライズのバグを修正するために、あなたは、プロセスの境界を越えてWPFコントロールを渡すときに発生する可能性があります。 google chromeがそのすべてを統合する方法は、それをより面白くする。したがって、他のものの間で調整を行うプロセスが1つあり、それがUIスレッドなどを所有しているかどうかが分かっている場合は、そのために質問してください。 – dotnetcoder

3

Chromeがレンダリングスレッドをどのように処理するかは明確にはわかりませんが、各タブには独自のレンダリングスレッドがあると仮定します。私は、タブを分離するプロセスのすべての努力のポイントを見て、共通のレンダリングスレッド上でそれらをすべて一緒に結びつけることを望んでいませんでした。彼らはお互いに干渉する機会があります。

私はWPFを使って 'chrome-style'ブラウザを実装しました。アプリケーションシェルは単一のプロセスでしたが、それぞれのタブは別のプロセスで動作するMAF AddInでした。レンダリングはすべて子プロセスにあり、共有されるものは何もありませんでした。各AddInは、プロセス境界を超えて渡されたINativeHandleContract(WPFコントロール)を返しました。

これは、子供のタブのどこにも例外があり、タブを取り下げるだけで、親プロセスが検出できて、フィードバックを提供したり、タブを再読み込みしたりすることができたということでした。

私はそれを達成したが、素早くブラウズした後、私はそれはいくつかのポインタを持っていると思うの周りにこの文書の波平: http://msdn.microsoft.com/en-us/library/bb909794.aspx

ケントBoogaartはまた、あなたはまた、からこのQFEが必要な場合があります役立つ手 http://kentb.blogspot.com/2008/06/maf-gymnastics-service-provider.html

を貸しましたマイクロソフトMS接続のバグに関しては http://archive.msdn.microsoft.com/KB982638https://connect.microsoft.com/VisualStudio/feedback/details/467381/wpf-controls-cannot-be-passed-across-process-boundaries

+1

スレッドは分離を提供しません。あるスレッドから例外をキャッチしてプロセスを再開することはできません。 –

+0

これは正しいので、私のコードは「それぞれのタブは別のプロセスで実行されているMAF AddInでした」 - 処理されていない例外に対するクロムのような回復力を可能にします。 – Adam

関連する問題