GBase 8s ESQLC创建线程安全的应用程序

GBase8s ESQL/C线程安全库

        GBase8s ESQL/C提供了静态和共享的线程安全库, 线程安全GBase ESQL/C应用程序中的每一个线程都可以拥有一个活跃的连接, 一个应用程序可以拥有多个线程。

        1. 线程安全库中包含了线程安全函数。

        2. GBase ESQL/C支持POSIX线程库。

  •         在esql命令执行时, 提供-thread参数, esql将该参数传递给ESQL/C预处理器esqlc,根据-thread参数,esqlc生成线程安全的代码,确保多线程能够正常执行。

ESQL/C线程安全代码的特点:

  1. 线程安全代码不定义任何静态数据结构。
  2. 线程安全代码动态声明游标。
  3. 线程安全代码使用宏定义状态变量。

下面的图显示的线程安全应用程序建立了3个连接。

在上面的图中, GBase ESQL/C程序包含了3个线程

  1. Main线程建立con1,连接Server_1上的数据库db1.
  2. Main线程创建Thread 2, Thread2建立con2, 连接Server_1上的数据库db1.
  3. Main线程创建Thread 3, Thread3建立con3, 连接Server_2上的数据库db2.

上图中所有的连接con1,con2,con3都是同时活跃的,能够执行SQL语句。

下面的代码片段演示了建立线程安全的连接。

main()

{

  EXEC SQL connect to ‘db1@Server_1’ as ‘con1’;

  start_threads(); /* start 2 threads */

  EXEC SQL select a into :a from t1; /* table t1 resides in db1 */

  ...

}

thread_1()

{

  EXEC SQL connect to ‘db1@Server_1’ as ‘con2’;

  EXEC SQL insert into table t2 values(10);/* table t2 is in db1 */

  EXEC SQL disconnect ‘con2’;

}

thread_2()

{

  EXEC SQL connect to ‘db2@Server_2’ as ‘con3’;

  EXEC SQL insert into table t1 values(10);/* table t1 is in db2 */

  EXEC SQL disconnect ‘con3’;

}

可以通过调用ifx_getcur_conn_name()函数取得当前连接的名字。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八珍豆腐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值