只想与那里的COM / DCOM专家确认......
我有一个在服务器上运行的Delphi COM EXE(线程是Single Apartment),同一个EXE的另一个副本在同一台服务器上启动 (一个服务器说2个处理器具有双核,因此任务管理器显示4个单独的图表)他们会轮流等待彼此还是会在不同的核心上运行?
我在某个地方发现了一个帖子
“如果两个客户端需要使用相同的对象,则必须轮流使用。使用此线程模型,实例数据是安全的,必须使用关键部分或其他形式的序列化来保护全局数据。当然,线程的多个调用中的局部变量是可靠的。“
答案 0 :(得分:4)
您错过了“来自同一服务器的不同对象”部分from the same paragraph。由于您具有“单一实例化”,因此您可以为每个COM对象实例获得单独的服务器,因此可以并行处理对这些实例的调用,并且COM不必提供任何互斥。
这样想。线程模型用于提供线程安全 - 同步访问同一进程的线程之间共享的数据。每个进程有一个对象,因此没有两个线程会尝试访问同一个对象,除非您尝试将指向一个对象的指针传递给另一个对象方法调用。