我尝试使用10个工作线程处理query的结果, 大概的程序是这样的
QSqlQuery query;
.............................
int size = query.numRowsAffected();
for(int i = 0 ; i < MAXTHREAD; ++i)
{
if(!query.seek( i*( size/MAXTHREAD ) ))
{
return 0;
}
thread->render(
query, /*process query from seeked position*/
size/MAXTHREAD, /*num of rows want to be handled*/
db /*db conn*/
);
}
............................
render 已经封装了start方法
if(!isRunning())
{
start();
}
我已经在所有值操作附近都加了lock
如果在不用wait() block线程的情况下无法处理查询结果, 会报
qGetStringData: Error while fetching data
QSqlQuery: not position on a valid record
在使用wait()逐条处理query时,结果一切正常,但是因为wait 阻塞事件循环,导致界面无响应
而且起不到多线程处理的效果
请教 有什么好的解决方法么?
谢谢~~~~~