Delphi COM EXE 和线程
Posted
技术标签:
【中文标题】Delphi COM EXE 和线程【英文标题】:Delphi COM EXE and Threading 【发布时间】:2010-09-23 02:48:00 【问题描述】:只是想与那里的 COM/DCOM 专家确认...
我有一个在服务器上运行的 Delphi COM EXE(线程是 Single Apartment),并且同一 EXE 的另一个副本在同一服务器上启动 (一台服务器有 2 个双核处理器,因此任务管理器会显示 4 个单独的图表)它们会轮流等待对方还是会在不同的内核上运行?
我在某处发现了一个帖子说
“如果两个客户端需要使用同一个对象,他们必须轮流使用。使用这种线程模型,实例数据是安全的,全局数据必须使用临界区或其他形式的序列化来保护。当然,线程的局部变量在多次调用中都是可靠的。”
【问题讨论】:
【参考方案1】:您错过了“来自同一服务器的不同对象”部分from the same paragraph。由于您有“单实例化”,因此每个 COM 对象实例都有一个单独的服务器,因此可以并行处理对这些实例的调用,并且 COM 不必提供任何互斥。
这样想。线程模型用于提供线程安全——同步访问同一进程的线程之间共享的数据。每个进程都有一个对象,因此没有两个线程会尝试访问同一个对象,除非您尝试将指向一个对象的指针传递给另一个对象方法调用。
【讨论】:
以上是关于Delphi COM EXE 和线程的主要内容,如果未能解决你的问题,请参考以下文章