相关疑难解决方法(0)

在主线程和子线程之间使用TThread的"同步"或使用窗口消息进行IPC更好吗?

我有一个用Delphi 2007编写的相当简单的多线程VCL gui应用程序.我在多个子线程(最多16个并发)中进行一些处理,需要更新主窗体上的网格控件(只需将字符串发布到网格中).没有任何子线程彼此交谈.

我的初始设计涉及调用TThread的"Synchronize"来更新当前运行的线程中的网格控件表单.但是,据我所知,调用Synchronize实际上就好像它是调用时的主线程一样.一次运行多达16个线程(并且大多数子线程的处理时间从<1秒到10秒),Window Messages是一个更好的设计吗?

我已经让它工作在这一点,子线程发布一个Windows消息(由几个字符串的记录组成),主线程有一个监听器,只是在收到消息时更新网格.

在这种情况下对IPC的最佳方法有何看法?窗口消息或'同步'?

如果我使用窗口消息,您是否建议将代码包装在我在TCriticalSection(进入和离开)块中发布到网格的位置?或者我不需要担心线程安全,因为我在主线程中写入网格(虽然在窗口消息处理程序的函数内)?

delphi multithreading ipc

21
推荐指数
3
解决办法
1万
查看次数

标签 统计

delphi ×1

ipc ×1

multithreading ×1