【发布时间】:2013-03-11 12:59:21
【问题描述】:
我有一个关于多线程的概念性问题:
在通过 DCOM 使用 RPC 的应用程序中,具有多线程公寓配置,主要形式是冻结。
1 - 如果在单元初始化中创建了CriticalSession,那么关键会话中的代码会在主线程上下文中运行吗?
2 - 当你调用方法执行任务时:
创建线程 1。 (DCOM 线程)
线程 1 创建线程 2。
线程 1 等待线程 2。
线程 2 创建 4 个线程以更快地运行任务。
线程 2 循环休眠 2 秒,直到 4 个线程结束。在这个过程中,主窗体应该被刷新以显示完成的百分比。一条消息以完成百分比发布到主窗体线程,但没有任何反应,主窗体被冻结。
3 - 当需要在线程 2 中进行 CRUD(创建读取更新删除)对象时,有一种更好的方法来代替 synchronized() 方法,以便在 4 个线程之一中进行同步?
4 - 4 个线程的优先级高于主线程,这是个问题吗?当这成为一个问题?
下图代表系统架构:
【问题讨论】:
-
这是一个挑剔的问题,但我建议稍微改变一下标签,也许像 DCOM 然后多线程,然后其余的可能不是真的必要,因为 DCOM(理论上)不受什么影响客户端和服务器使用的语言。如果这是德尔福特有的东西,你能添加更多关于它的信息吗?或者这只是“这是我正在使用的语言,以防它有所作为”之类的事情?
-
@jrh 这只是“这是我正在使用的语言,以防它有所作为”之类的事情
标签: multithreading delphi freeze dcom delphi-6