在线程安全的 GBase 8s ESQL/C 应用中,DORMANT 选项使活动的连接成为休眠的。现在另一线程可通过发出不带 DORMANT 选项的 SET CONNECTION 语句来使用该连接。在一个 GBase 8s ESQL/C 应用中,线程安全的环境可有许多线程(执行特别任务的工作的并发部分),且每一线程可有一个活动的连接。
活动的连接与特定的线程相关联。两个线程不可分享相同的活动的连接。一旦线程使活动的连接成为休眠的,其他线程就可使用那个连接。仍然建立休眠的连接,但当前休眠的连接不与任何线程相关联。例如,如果在名为 thread_1 的线程中名为 con1 的连接是活动的,则名为 thread_2 的线程不可使连接 con1 成为它的活动连接,直到 thread_1 已使连接 con1 成为了休眠的为止。
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 应用之内的线程可通过使相关联的连接成为当前的来使用同一游标,即使在任何给定的时间仅一个线程可使用该连接。