如何等待Indy线程池中的所有线程完成

时间:2015-04-06 14:37:16

标签: multithreading delphi

我使用Delphi xe 5作为使用Indy来管理我的服务器应用程序的应用程序

每个客户端连接都有自己的会话,这是完美的

现在我需要在其中一个会话中以aysnc方式执行几项任务

当所有这些任务都完成后,控制权可以返回给调用者

我正在研究在我的程序中使用本地作用域线程池,它将把每个任务放到线程池中

我见过看起来很完美的TIdThreadMgrPool

如何等到我的所有主题完成后?

1 个答案:

答案 0 :(得分:1)

Indy 9&#39}的TIdThreadMgrPool组件(替换为Indy 10中的TIdSchedulerOfThreadPool组件)不是通用线程池。它仅用作Indy的TIdTCPServer组件的客户端线程池。没有选项等待活动线程完成运行,TIdTCPServer在内部关闭时处理它。

Delphi有很多第三方通用线程池实现,例如OmniThreadLibrary。如果您使用的是XE7,则可以利用其新的Parallel Programming Library代替。