Ang*_*yel 3 windows delphi firebird multithreading delphi-2009
我想将带参数的查询的执行放入delphi-2009中的线程安全类中.
我在谷歌导航但我没有找到我想要的东西.
谢谢
Rob*_*ove 10
我发现大多数数据库API在连接级别只是线程安全的.Firebird可能会有所不同,但是几年前(8 +)使用InterBase,它不是线程安全的.更新:我已经验证Firebird在连接级别只是线程安全的.
这意味着通常您需要避免同时使用来自多个线程的单个连接.适用于针对给定连接的查询的执行.避免在针对同一连接运行的不同线程中有两个查询.
但是,如果你有两个连接,你可以同时运行两个查询.
您的问题的本质似乎是如何以安全的方式将数据传递给线程,虽然您特别需要的是数据库,但无论线程中包含什么,这都以通用方式应用.
传递数据的最简单方法是创建,您可以创建挂起的线程,在TThread后代上设置各种属性.然后恢复线程的执行.需要从Execute()方法中调用在线程中执行工作的实际代码.
如果需要在线程之间共享数据,则必须包含允许同步的各种结构之一,例如Critical Section,Mutex或Semaphore.
Delphi在SyncObjs.pas单元中为每个文件包装了包装器.
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |