我是用XPCOM开发Firefox扩展的新手。目前我正在使用一个后台线程来做一些XPCOM中的工作,需要从主线程传递一个XPCOM接口的指针(例如nsIDomwindow)到那个线程。但是如果在windows API fundtion Createthread中使用指针作为参数,然后使用它,就会导致Firefox崩溃。
如何解决这个问题?在MS com中有没有类似的使用CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream的方法?XPCOM是否只支持单线程?
期待您的所有建议和示例代码!提前感谢!
发布于 2011-12-10 22:51:37
许多XPCOM对象都不是线程安全的,特别是任何DOM对象都只能从主线程访问。要检查对象是否是线程安全的,您必须将其QueryInterface到nsIClassInfo,并检查nsIClassInfo.flags是否包含nsIClassInfo.THREADSAFE标志。如果是,那么您可以简单地在线程之间传递接口指针。
https://stackoverflow.com/questions/8454058
复制相似问题