gpt4 book ai didi

windows - 在后台线程中运行 Firebird 查询并保存结果集

转载 作者:可可西里 更新时间:2023-11-01 14:41:32 26 4
gpt4 key购买 nike

我想将带有参数的查询的执行放入 delphi-2009 中的线程安全类中。

我在 google 中导航,但没有找到我想要的内容。

谢谢

最佳答案

我发现大多数数据库 API 仅在连接级别是线程安全的。 Firebird 可能不同,但在几年(8+)年前使用 InterBase,它不是线程安全的。更新:I have verified Firebird is only thread safe at the connection level.

这意味着通常您需要避免同时使用来自多个线程的单个连接。针对给定连接执行查询适用。避免在不同线程中针对同一连接运行两个查询。

但是,话虽如此,如果您有两个连接,则可以同时运行两个查询。

您的问题的本质似乎是如何以安全的方式将数据传递给线程,尽管您具体需要的是数据库,但无论线程中包含什么,这都适用于通用方式。

传递数据的最简单方法是在创建时,您可以创建暂停的线程,在您的 TThread 后代上设置各种属性。然后恢复线程的执行。需要从 Execute() 方法调用在线程中执行工作的实际代码。

如果您需要在线程之间共享数据,您必须包装在允许同步的各种结构之一中,例如临界区、互斥体或信号量。

Delphi 的 SyncObjs.pas 单元中的每一个都有库包装器。

关于windows - 在后台线程中运行 Firebird 查询并保存结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594174/

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