【发布时间】:2011-03-26 02:22:07
【问题描述】:
看来我终于要在我的 Delphi 2009 程序中实现某种线程。如果只有一种方法可以做到这一点,我就会跑起来。但我看到了几种可能性。
谁能解释这些之间有什么区别以及为什么我会选择一个而不是另一个。
Delphi 中的 TThread 类
...还有其他人吗?
编辑:
我刚刚阅读了 Gabr 在 2010 年 3 月(第 10 期)Blaise Pascal Magazine 上发表的一篇出色的文章,标题为“创建线程的四种方法”。您必须订阅才能获得该杂志的内容,因此受版权保护,我无法在此处复制任何关于它的实质性内容。
总的来说,Gabr 描述了使用 TThreads、直接 Windows API 调用、Andy 的 AsyncCalls 和他自己的 OmniThreadLibrary 之间的区别。他确实在最后得出结论:
“我并不是说除了经典的 Delphi 方式 (TThread) 之外,你必须选择其他任何东西,但知道你有哪些选择仍然是件好事”
Mghie 的回答非常彻底,并建议 OmniThreadLibrary 可能更可取。但是我仍然对每个人关于我(或任何人)应该如何为他们的应用程序选择线程方法的意见感兴趣。
您可以添加到列表中:
。 4. 直接调用 Windows API
。 5. Misha Charrett's CSI Distributed Application Framework 正如 LachlanG 在他的回答中所建议的那样。
结论:
我可能会选择 OmniThreadLibrary。我喜欢Gabr的作品。多年前我使用了他的分析器 GPProfile,而我目前正在使用他的 GPStringHash,它实际上是 OTL 的一部分。
一旦 Embarcadero 将该功能添加到 Delphi 中,我唯一关心的可能是升级它以使用 64 位或 Unix/Mac 处理。
【问题讨论】:
标签: multithreading delphi asynchronous