#include "thread.h"
#include <QVector>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv)
QVector<Thread*>vector
Thread *thread
//创建多个线程,并start
for(int i=0i<10i++){
thread=new Thread
vector.append(thread)
thread->set(i)
thread->start()
}
//等待所有线程执行完,然后删除线程
foreach(thread,vector){
thread->wait()
}
foreach(thread,vector){
delete thread
}
return a.exec()
}
单纯insert是不会出现死锁的,只有查询、更新、删除时where中不止一个条件时,容易多线程死锁!但是在复杂的语句中例外,比如insert select 如果select中的where条件也是两个及其以上是会死锁的。
1。通过线程的互斥来同步 *** 作数据库2。数据库采用事务处理表中的数据
3。采用共享方式打开数据库,不是以独占方式打开数据库
建立一个mysql连接表加上一个临界区,表结点是这样的(mysqlcon,bool),根据实际情况定大小。我用的是10个连接。
当要进行mysql *** 作时,就从表中取出一个闲置的mysql连接,并把bool量改为true,使用完后改成false,临界区的做用是保障一个mysql连接一次只能被一个线程使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)