Qt-MySQL多线程写数据库的一种简单方法---多线程写队列入库

记录一种安全的多线程写数据库的方法。
1.写队列线程。
开启任意个线程往队列(QQueue< QByteArray > queue)里写数据,这是线程安全的。

while(reading){ mutex.lock(); if(tcpSocket->waitForReadyRead()){ QByteArray inmsg = tcpSocket->readAll(); queue.push_back(inmsg); qDebug()<

2.读队列线程
在这个线程内与数据库建立单个连接,写库(略)。queue.size()>1防止越界。
void SendMySQLthread::run(){ while(sending){ if(!queue.empty()){ if(queue.size()>1){ mutex.lock(); queue.pop_front(); mutex.unlock(); } } } }

【Qt-MySQL多线程写数据库的一种简单方法---多线程写队列入库】3.这种方法速度上与单线程相比没有明显提升,主要是为了获取多客户端的数据。
4.性能:开了6个1ms为间隔发数据的客户端,内存占用10M左右,CPU占用30%左右,原来是个废U的操作。
Qt-MySQL多线程写数据库的一种简单方法---多线程写队列入库
文章图片

Qt-MySQL多线程写数据库的一种简单方法---多线程写队列入库
文章图片

    推荐阅读