【发布时间】:2012-11-17 13:38:18
【问题描述】:
我有一个实现 com 服务器的 Delphi7 程序。最近,由于一些新的数据库查询,程序初始化完成的时间有所增加。我所说的程序初始化的意思是程序能够以有意义的方式处理传入的 com 调用所需的时间。 我的问题是当程序尚未正确初始化时如何处理传入的 com 呼叫。丢弃调用中包含的信息不是一种选择,调用需要等待程序初始化。 使用布尔初始化变量的简单 while 循环是否足够? 我问是因为我读到 com 调用是在 VCL 主线程中执行的,这表明 while 循环会导致程序挂起(初始化也在 VCL 线程中进行)。
互斥锁不能用于等待同一线程中执行的代码,对吧?
换句话说,com 调用是否会中断(com 服务器的)VCL 线程的执行,直到它完成,或者在同一线程中并发执行代码是如何工作的? 感谢您抽出宝贵时间。
【问题讨论】:
-
COM 不介意等待。你为什么要帮忙?不要帮忙。
-
但是如果 com 调用在 vcl 线程中执行并且初始化发生在 VCL 线程中,那么 while 循环不会阻塞该线程并导致初始化永远不会完成吗?当 windows 启动一个包含 com 服务器的 delphi 程序时,在调用 com 函数之前执行了哪些部分(初始化部分,表单创建)?如果我知道,那么我可以确保在初始化完成之前永远不会执行 com 函数。
标签: multithreading delphi com initialization delphi-7