GBase8s数据库使当前的连接成为休眠的连接

本文详细介绍了GBase8s ESQL/C环境中如何使用SETCONNECTION语句将连接设置为休眠状态,以及在单线程和线程安全环境中的不同行为。在单线程应用中,休眠连接使得只有一个活动连接;而在线程安全应用中,不同线程可以拥有独立的活动连接。通过示例代码展示了线程安全环境下如何切换和使用休眠连接,强调了线程间连接使用的规则和限制。
摘要由CSDN通过智能技术生成

在 SET CONNECTION connection DORMANT 语句中,connection 必须表示当前的连接。带有

DORMANT 选项的 SET CONNECTION 语句使指定的当前连接成为休眠的连接。

例如,下列 SET CONNECTION 语句使连接 con1 休眠:

SET CONNECTION ‘con1’ DORMANT;

如果您指定一个已经是休眠的连接,则带有 DORMANT 选项的 SET CONNECTION 语句生成错

误。例如,如果连接 con1 是当前的,而连接 con2 是休眠的,则下列 SET CONNECTION 语句

返回错误消息:

SET CONNECTION ‘con2’ DORMANT;

下列 SET CONNECTION 语句成功地执行:

SET CONNECTION ‘con1’ DORMANT;

单线程环境中的休眠连接

在单线程 GBase 8s ESQL/C 应用(不使用线程的)中,DORMANT 选项使当前的连接成为休眠

的。使用此选项使单线程的 GBase 8s ESQL/C 应用与线程安全的 GBase 8s ESQL/C 应用向上兼

容。然而,在程序执行时,单线程的环境可仅有一个活动的连接。

在线程安全环境中的休眠连接

在线程安全的 GBase 8s ESQL/C 应用中,DORMANT 选项使活动的连接成为休眠的。现在另一线

程可通过发出不带 DORMANT 选项的 SET CONNECTION 语句来使用该连接。在一个 GBase 8s

ESQL/C 应用中,线程安全的环境可有许多线程(执行特别任务的工作的并发部分),且每一线程

可有一个活动的连接。

活动的连接与特定的线程相关联。两个线程不可分享相同的活动的连接。一旦线程使活动的连接成

为休眠的,其他线程就可使用那个连接。仍然建立休眠的连接,但当前休眠的连接不与任何线程相

关联。例如,如果在名为 thread_1 的线程中名为 con1 的连接是活动的,则名为 thread_2

的线程不可使连接 con1 成为它的活动连接,直到 thread_1 已使连接 con1 成为了休眠的为

止。

下列来自线程安全的 GBase 8s ESQL/C 程序的代码片段展示在线程安全的应用之内,特定的线程

是如何使连接成为活动的,通过此连接在表上执行工作,然后再使该连接成为休眠的,以便其他线

程可使用该连接:

thread_2()

{ /* 使 con2 成为活动的连接 */

EXEC SQL connect to ‘db2’ as ‘con2’;

/Do insert on table t2 in db2/

EXEC SQL insert into table t2 values(10);

/* 使其他线程可使用 con2 */

EXEC SQL set connection ‘con2’ dormant;

}

如果使用 CONNECT . . . WITH CONCURRENT TRANSACTION 语句初始化了到数据库环境的连

接,则随后连接到那个数据库环境的任何线程都可使用正在进行的事务。此外,如果开放的游标与

这样的连接相关联,则当使该链接成为休眠的时,该游标保持打开。

在线程安全的 GBase 8s ESQL/C 应用之内的线程可通过使相关联的连接成为当前的来使用同一游

标,即使在任何给定的时间仅一个线程可使用该连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值