佚名通过本文主要向大家介绍了请问买家具去哪里,请问有眼袋怎么办,请问家具品牌,请问430是不锈钢吗,请问您今天要来点兔子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问写一个DLL形式的COM是否需要考虑重入问题?
描述:
解决方案1:
描述:
我写一个DLL形式的AutomationObject
被HTM文件中VB代码调用,有可能同时打开几个这类网页而导致同时有几个来自VB代码的访问请求
想问一下
在对外公开的函数中是否需要自己处理函数重入问题?
解决方案1:
这取决于你的组件的线程模型。如果你采用的是STA(Apartment,一般组件,尤其是VB组件都是采用这种模型),那么组件实例中的变量,不用考虑重用,但是组件中的全局变量,必须加以同步保护措施以防止并发冲突。
具体来说,如果你用ATL开发组件,那么组件类的成员变量(不包括静态变量)不需要考虑同步保护,而整个工程的全局变量必须加以同步保护。
一般地,不同线程的客户生成的STA组件运行于各自的线程中,所以不存在重入问题。如果线程A生成STA组件,然后把组件的指针传给线程B,则线程B调用组件时,请求是排队在线程A中的,并且发生线程切换。
在ASP中,最好不要把组件指针存在Application、Session等变量中,这会造成线程切换,极大地影响性能,并且还可能造成不可预知的错误。