3
A
回答
10
我发现,大多数数据库API的只在螺纹连接级别的安全。火鸟可能会有所不同,但使用InterBase几年(8+)以前,它不是线程安全的。更新:I have verified Firebird is only thread safe at the connection level.
这意味着您通常需要避免同时使用来自多个线程的单个连接。针对给定连接执行查询。 避免在针对相同连接运行的不同线程中有两个查询。
但是,如果你有两个连接,你可以同时运行两个查询。
您的问题的本质似乎是如何以安全的方式将数据传递给线程,尽管您的具体需求是数据库,但无论线程中包含的内容如何,这都适用于通用方式。
传递数据的最简单方法是在创建时,您可以创建挂起的线程,在TThread
后代中设置各种属性。然后恢复线程的执行。 您需要从Execute()
方法调用执行线程中工作的实际代码。
如果您需要在线程之间共享数据,则必须将其包含在允许同步的各种结构之一中,例如Critical Section,Mutex或Semaphore。
Delphi在SyncObjs.pas单元中为它们中的每一个都有库包装器。
相关问题
- 1. 合并3火鸟查询
- 2. Jaybird(火鸟JDBC)结果集FetchSize - 分页持久查询
- 3. 如何在执行过程返回结果集火鸟
- 4. 如何在javafx 2.1后台线程中运行查询
- 5. 在后台运行查询
- 6. 在后台运行线程
- 7. PostgreSQL的:运行于各行的查询,并保存结果在它
- 8. 在火鸟取消长时间运行的查询或交易
- 9. 火鸟查询给出奇怪的结果
- 10. 火鸟查询选择前一行
- 11. 火鸟SQL嵌套查询
- 12. SQL(火鸟)查询太慢
- 13. 火鸟SQL查询优化
- 14. 保存查询结果VAR
- 15. 在java中的后台运行线程
- 16. 无法运行火鸟
- 17. 如果火鸟
- 18. 如何正确访问在后台线程中创建的查询结果?
- 19. 保存并行化的例程结果
- 20. Bigquery API:使用destinationTable运行查询不会保存结果
- 21. 保存SQL查询,并从上次查询结果
- 22. 在SQL查询结果中合并行
- 23. 执行不同规格的PosgreSQL查询并保存结果
- 24. 在后台线程中运行并有一个完成块?
- 25. 执行SQL查询并循环遍历结果集在rails中
- 26. 加载SQL查询的结果集并将其保存到ASP.NET中的Session中?
- 27. 运行“tf.exe状态”在C#中,并保存结果
- 28. 如何在后台运行查询
- 29. 如何在Linux中运行后台php进程并结束它?
- 30. 在后台运行并行
+1对于我的其中一个项目,我广泛使用它(后台线程中的查询)。但是我不需要将实际的查询对象从一个线程传递到下一个线程,而我正在为每个线程使用一对DbConnection +事务。 – 2011-04-08 11:51:09