很早以前用过,现在记得不是很清楚了。
OStartup是初始化数据库连接的,如果不同的线程使用不同的数据库连接就需要在每个线程调用,若使用一个全局只需调用一次就行了。

解决方案 »

  1.   

    我见到帮助中说每个进程要调用一次。但看了Oracle提供的多线程的例子(使用连接池),发现每个线程开始都调用了一次OStartup,所以很奇怪!另外,使用OSession::CreateDatabasePool创建连接池之后,在使用GetDatabaseFromPool取得连接后,该连接是否被锁定(也就是说是否适用于多线程程序),如果被锁定,什么时候用什么方法释放该锁那?
      

  2.   

    关于GetDatabaseFromPool之后是否被锁定的问题已经知道:的确锁定。
    但帮助中关于什么时候释放该锁定说得很模糊,如下:The OraDatabase object obtained from the pool is then ed as in use and will be returned to the pool when the object is no longer referenced by the application.