2011-12-10 6 views
1

XPCOMでFirefox拡張機能を開発するのは初めてのことです。現在、私はXPCOMでいくつかの作業を行うバックグラウンドスレッドを使用しており、メインスレッドからそのスレッドに1つのXPCOMインターフェイス(たとえばnsIDomwindow)のポインタを渡す必要があります。しかし、Windows API fundtion Createthreadのパラメータとしてポインタを使用すると、Firefoxのクラッシュが発生します。XPCOMインターフェイスポインタをスレッドに渡す

この問題を解決するにはどうすればよいですか? MS comでCoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStreamを使用する類似の方法はありますか? XPCOMはシングルスレッドのみをサポートしていますか?

あなたのアドバイスとサンプルコードをお待ちしています!前もって感謝します!

答えて

1

多くのXPCOMオブジェクトはスレッドセーフではありません。特に、どのDOMオブジェクトにもメインスレッドからしかアクセスできません。オブジェクトがスレッドセーフであるかどうかを調べるには、QueryInterfacensIClassInfoにして、nsIClassInfo.flagsnsIClassInfo.THREADSAFEフラグが含まれているかどうかをチェックする必要があります。そうであれば、単にスレッド間でインタフェースポインタを渡すことができます。

関連する問題