void ThreadHandle::initThreadType(ThreadType type, unsigned int max) { if (!initfist) { this->type = type; this->size = max; if (this->size == 0) { if(type == THREADSIZE) this->size = 10; else this->size = 1000; } if (type == THREADSIZE) initThreadSize(); else { QThread * tmp = new QThread; #ifndef Q_OS_WIN tmp->setEventDispatcher(new EventDispatcherLibEv()); #endif threadSize.insert(tmp,0); tmp->start(); } } initfist = true; }
void ThreadHandle::initThreadSize() //建立好线程并启动, { QThread * tmp; for (unsigned int i = 0; i < size;++i) { tmp = new QThread; #ifndef Q_OS_WIN tmp->setEventDispatcher(new EventDispatcherLibEv()); #endif threadSize.insert(tmp,0); tmp->start(); } }
QThread * ThreadHandle::findHandleSize() //查找到线程里的连接数小于最大值就返回查找到的,找不到就新建一个线程 { for (auto it = threadSize.begin();it != threadSize.end() ;++it) { if (it.value() < size) { it.value() ++; return it.key(); } } QThread * tmp = new QThread; #ifndef Q_OS_WIN tmp->setEventDispatcher(new EventDispatcherLibEv()); #endif threadSize.insert(tmp,1); tmp->start(); return tmp; }