我开发了我的第一个COM组件(是的,COM开发领域的新手),初始化是用COINIT_MULTITHREADED
完成的。此外,此COM组件是本地服务器可执行文件。但是,我没有向此组件添加任何同步代码。您如何看待:我是否必须将CRITICAL_SECTION
添加到代码或MS COM架构为我处理它?提前谢谢。
答案 0 :(得分:1)
由于您指定了COINIT_MULTITHREADED,因此COM允许多次同时调用您的服务器,因此您需要自己进行同步。
如果您希望COM序列化呼叫,请使用COINIT_APPARTMENTHREADED。
有关详细信息,请参阅MSDN。
答案 1 :(得分:0)
是
如果您知道将从多个方向(线程)访问数据,请使用您自己的互斥机制,不要假设MS COM架构来处理它。
至少,根据微软制造的其他技术,我会做什么,就像“我们做基础,你做其余的事”。至少使用原生API。
将一个关键部分对象包裹在一个漂亮的课程中,然后用它踢它!