多线程环境下OTL的使用
2013-07-30 20:31
176 查看
1, OTL是什么
OTL是一个数据库访问模板库,支持绝大部分数据库访问。OTL是C++写的,based on templates, 只有一个头文件,大小只有800K+。使用方便,性能也很不错
可以使用OTL访问基本上所有的数据库,在你更换数据库时不用修改任何业务代码
强烈推荐在C++开发中使用
2,OTL下载 http://www.veda.dk/~clr/doc/otl/otlv4_h.zip
3,OTL使用
参见OTL Samples: http://www.veda.dk/~clr/doc/otl/otl3_examples.htm
4,多线程下使用OTL时几个注意的地方
1) static int otl_connect::otl_initialize(const int threaded_mode=0);
如果在多线程环境下使用,threaded_mode设置为1
注意:即使设置为1并不代表就是线程安全(thread-safe)
实际上OTL并不是线程安全的,一个otl_connect只能同时被一个线程使用,如果在多线程环境下使用OTL,需要自己保证otl_connect对象的线程安全
2)otl_stream_pool
OTL支持stream pool,就是一个池,在一个otl_stream close时,把它放到池中,下次访问时可以从池中获取,实现fast reopen,提高程序性能
注意:otl_stream_pool是otl_connect的一个成员,所以要在otl_connect锁unlock之前执行otl_stream.close,否则会出现那个啥:)
即使不使用otl_stream_pool,也要在otl_connect锁unlock之前执行otl_stream.close
经验证,OTL在多线程环境可以稳定运行
使用otl_stream_pool可以获得一定的性能提升
本文版权归作者 kanego 和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
OTL是一个数据库访问模板库,支持绝大部分数据库访问。OTL是C++写的,based on templates, 只有一个头文件,大小只有800K+。使用方便,性能也很不错
可以使用OTL访问基本上所有的数据库,在你更换数据库时不用修改任何业务代码
强烈推荐在C++开发中使用
2,OTL下载 http://www.veda.dk/~clr/doc/otl/otlv4_h.zip
3,OTL使用
参见OTL Samples: http://www.veda.dk/~clr/doc/otl/otl3_examples.htm
4,多线程下使用OTL时几个注意的地方
1) static int otl_connect::otl_initialize(const int threaded_mode=0);
如果在多线程环境下使用,threaded_mode设置为1
注意:即使设置为1并不代表就是线程安全(thread-safe)
实际上OTL并不是线程安全的,一个otl_connect只能同时被一个线程使用,如果在多线程环境下使用OTL,需要自己保证otl_connect对象的线程安全
2)otl_stream_pool
OTL支持stream pool,就是一个池,在一个otl_stream close时,把它放到池中,下次访问时可以从池中获取,实现fast reopen,提高程序性能
注意:otl_stream_pool是otl_connect的一个成员,所以要在otl_connect锁unlock之前执行otl_stream.close,否则会出现那个啥:)
即使不使用otl_stream_pool,也要在otl_connect锁unlock之前执行otl_stream.close
经验证,OTL在多线程环境可以稳定运行
使用otl_stream_pool可以获得一定的性能提升
本文版权归作者 kanego 和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
相关文章推荐
- 【使用线程池的好处】多线程的环境中,尽量采用线程池
- 多线程环境下使用 DateFormat
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- 使用pthread库进行多线程编程1 - UNIX环境高级编程第11章读书笔记
- JAVA并发七(多线程环境中安全使用集合API)
- 多线程环境下使用c++输出流和printf函数的区别
- 在多线程环境中使用Jedis
- 转:【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- 某些特定的多线程环境下是不是能直接使用HashMap
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- 多线程、多平台环境中的跟踪 - 使用 log4j 和 UNIX 命令来挖掘跟踪数据
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- CSocket在多线程环境下使用Static库出错的解决办法
- 单例模式如何在多线程环境下保证安全—Double Checked Locking 模式使用
- 使用pthread库进行多线程编程1 - UNIX环境高级编程第11章读书笔记
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- 在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环?
- [原]Java多线程编程学习笔记之七:多线程环境中安全使用集合API(含代码)
- 【使用线程池的好处】多线程的环境中,尽量采用线程池
- 多线程环境下使用log4j输出各线程的标识,区分各线程输出的内容