首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台线程中运行Firebird查询并保存结果集

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

Stack Overflow用户
提问于 2011-04-08 19:06:30
回答 1查看 1.7K关注 0票数 3

我想把带参数的查询的执行放到delphi-2009中的一个线程安全类中。

我在谷歌中导航,但我没有找到我想要的东西。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-08 19:46:24

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

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

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

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

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

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

Delphi在SyncObjs.pas单元中为其中的每一个都提供了库包装。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5594174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档