近期一直在查找连接多线程之类的题问,今天正好有机会和大家分享一下.
mysql Connector C/C++ 多线程封装
在网上找了许久,有很多封装,但是感到对多线程理处的多不,都不是很想理。封装完的第一个版本,法想比拟简单,应用一个单例模式,对应一个连接,多线程查询的时候都是在这个链接上成完,如下略简码代
class DbClass { public: open(....) { mysql_real_connect(mDB); } QuerySQL(....) { mysql_real_query(mDB); } protected: MYSQL* mDB; }
查了一下文档发在现应用多线程时mysql_real_query数函和mysql_store_result数函必须加锁,由于ping有可能成造连接重连,因此在ping面里也加上了锁,如下码代
class DbClass { public: open(....) { mysql_real_connect(mDB); }
ping()
{
mutex.lock