gpt4 book ai didi

multithreading - Delphi线程最佳实践

转载 作者:行者123 更新时间:2023-12-03 15:57:12 26 4
gpt4 key购买 nike

我正在我的应用程序中实现同步方法。它将执行的主要步骤是:

  • 从远程站点获取 XML 内容
  • 使用 IXMLDomDocument2 解析此 XML
  • 更新 Firebird 数据库

逻辑相当复杂,但本身运行良好。

问题是当我尝试在单独的线程中运行它时。我很清楚,我的逻辑没有正确地实现线程安全。

所以我们来切片

I - 使用 TidHTTP 获取内容

没有任何问题,我应该有任何疑虑吗?

II - 对于 IXMLDomDocument2 我正在打电话

CoInitializeEx(nil, 0);

根据the documentation应该足以安全地使用IXMLDomDocument2。看起来没问题,添加后我在尝试使用它时没有收到任何错误。这里还有什么额外的问题吗?

III - 安全使用 Firebird

我的问题就在这里。有时它有效,有时则无效(我猜这是设计不良的线程逻辑的主要症状)。大多数时候,我会收到 EInterbaseError ,并显示消息“从连接读取数据时出错”。其他时候它只是锁定。

我应该与数据库建立单独的连接吗?

最佳答案

Warren 解决了共享后台和前台线程之间的连接的主要问题...您还有另一个问题,那就是对 CoInitialize 的每次调用都需要与 CoUninitialize 配对

http://msdn.microsoft.com/en-us/library/windows/desktop/ms688715(v=vs.85).aspx

关于multithreading - Delphi线程最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com