informix 多线程/多进程

     Informix支持一个进程中的多个线程同时对数据库进行操作,既可以多个线程使用多个数据库连接,也可以多个线程共享一个数据库连接。
   
    无论是那种方式,都需要认真分析处理多线程的共享变量之间加锁、解锁的处理。

    本文针对多线程的EC程序中的几个问题进行说明:

    1、编译连接
  
    当只有一个完整的ec文件时,可以使用ESQL的-thread选项,ESQL会自动编译连接线程安全的informix库。
  
    当存在多个文件,包括ec、c、C文件时,可以首先使用ESQL的-c和-thread选项将ec文件编译成.o文件,然后使用连接器强制连接线程安全的库(th库)。
  
    总之要求下面几点:
        A、ESQL要加上-thread选项
        B、配置环境变量THREADLIB=POSIX
        C、保证连接的是线程安全的库。

    2、多个线程共享一个连接
      
    多个线程共享一个连接时,在连接建立好以后,可以在一个线程中使用
    EXEC SQL set connection 'con' dormant;
    将连接置于dormant状态,此时的连接可以被其它的线程激活。

    其它线程使用
    do {
     EXEC SQL set connection 'con';
    } while ( ( sqlca.sqlcode == -1802 ) );
    将连接激活,此时可以访问数据库了,而且只用本线程可以访问数据库。
    只有本线程将连接置为dormant后,才可以再被其它的线程使用。

    3、多个线程使用多个连接

    A、此时每个线程需要有自己的连接名,各个连接名必须不同。  
    B、必须仔细处理共享变量的互斥访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值