#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()
}
楼上的解释不太对。多线程虽然是最终单cpu执行,但是cpu执行并不是1 次处理完1个线程才到第2个的,多线程处理时候,cpu把各线程再分成片段,处理完1线程第一片段就到线程2第1片段,如此循环。至于楼主问题,冲突可能性是存在的,数据库一般是并发只读,如果有写入,默认锁表或者锁行。此时排他写 *** 作。完毕以后解锁。如果写进程不幸锁死或者过长,会导致其他线程无法写入。因此,冲突发生的概率其实和写过程复杂度相关,和并发写请求多少相关,如果后台100个线程写入的话,冲突几率还是有的,如果调试能监控到拒绝写入错误,建议单进程负责写入,其他工作线程提交请求至写入线程轮候输入。解决写入冲突问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)