2011-12-10 30 views
1

我是新開發的帶有XPCOM的Firefox擴展。目前,我正在使用後臺線程在XPCOM中完成一些工作,並且需要從主線程向該線程傳遞一個XPCOM接口(例如nsIDomwindow)的指針。但是如果在windows API fundtion Createthread中使用指針作爲參數並使用它,那麼會導致Firefox崩潰。通過XPCOM接口指針穿越線程

如何解決這個問題?是否有任何類似的方式在MS com中使用CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream? XPCOM僅支持單線程嗎?

期待您的建議和示例代碼!提前致謝!

回答

1

許多XPCOM對象不是線程安全的,特別是任何DOM對象只能從主線程訪問。要檢查一個對象是否是線程安全的,您必須QueryInterface它到nsIClassInfo並檢查nsIClassInfo.flags是否包含nsIClassInfo.THREADSAFE標誌。如果是,那麼你可以簡單地在線程之間傳遞接口指針。