代码之家  ›  专栏  ›  技术社区  ›  Charles Faiga

Delphi-线程框架[关闭]

  •  12
  • Charles Faiga  · 技术社区  · 16 年前

    我正在寻找一个线程框架在我的Delphi应用程序中使用。

    目前我正在评估 OmniThreadLibrary -到目前为止,它看起来不错,做了我需要的一切。

    (我使用的是D2006和D2009)

    4 回复  |  直到 13 年前
        1
  •  14
  •   Charles Faiga    16 年前

    根据维加尔的建议

    根据我几个小时的评估 全线程库

    2) 它隐藏了关于多线程的大部分细节

    3) 只需几行代码,就可以设置多个线程

    4) 处理进程间消息很容易

    5) 目前仍在积极开发中

        2
  •  7
  •   Mihai Limbășan    16 年前

    不是这样的框架,但有 AsyncCalls . 它的作用域不同于OmniThreadLibrary,但它也支持旧版本的Delphi。

        3
  •  4
  •   mjn anonym    16 年前

    * TIdThreadSafeInteger
    * TIdThreadSafeBoolean
    * TIdThreadSafeString
    * TIdThreadSafeStringList 
    

    ... 还有更多

        4
  •  2
  •   casperOne    13 年前

    在过去的10年里,我一直在开发自己的扩展线程框架,该框架还集成了一个类似架构的通信框架。在这个阶段,它可以与Delphi2005-2007一起使用,但很快将用于Delphi2009-2010。此应用程序开发框架可用于构建大规模分布式系统,因为它设计为允许任何线程在任何进程中运行,并使用简单的线程通信协议,无论线程是在同一进程中,还是在不同机器上的不同进程中,该协议都是相同的。

    http://www.adug.org.au/downloads/CSIFramework.html

    我的框架使用的库并不像网站上显示的那样广泛(我刚刚重新编写了该页面,但可能需要一天左右的时间才能更新)。此外,所有必需的文件(除了数据库抽象层)都包含在框架中,因此不需要安装第三方库来使用框架。

    • 绝地JCL
    • 涡轮动力Abbrevia
    • 数据库抽象库(可选)

    实际上,我的框架不仅仅是一个线程框架,尽管线程框架是它的一部分。线程框架是通过将所有线程实现为线程队列来构建的。在线程队列之间传递的“消息”实际上是打包在泛型对象中的数据,它允许我在线程之间以任何方式传递任何结构化的数据。我可以通过添加消息在线程之间异步传递消息,或者通过添加消息并接收响应消息来同步传递消息。线程本身订阅其他线程以接收消息,因此在设计时线程之间没有耦合。

    在过去的10年里,我花了2年多的时间来开发这个框架。它已经成功地部署在一个多层报警监控系统中(在三个应用程序中使用了20多个不同的线程类),我目前正在visualstudio2008中使用这个框架构建一个分布式系统。

    简言之,如果您只需要一个简单的线程框架,那么这可能是一种过分的做法。然而,如果您想开发一个复杂的多线程系统,它可能跨越多个应用程序,那么学习曲线可能是值得的。

    还有几点:

    • 组成应用程序的线程(编号和配置)都是在XML配置文件中定义的,而不是在代码本身中定义的(不需要编写任何代码将它们包含在应用程序中)
    • 如果您使用数据库抽象组件,那么多线程数据库访问将自动可用(不需要额外的代码)
    • 有一个简单的开发人员指南,您可以从网页下载,它也包含在框架下载中,从开发人员的角度概述了框架