int ThreadPool::threadReaper () { TRACE_CALL; VxCritSec cs (m_threadCountLock); int unusedThreads = threadCount() - queueSize (); if ((threadCount () - unusedThreads) < minThreads ()) unusedThreads -= minThreads (); if (queueIsFull () || unusedThreads <= 0) return 0; while (unusedThreads-- > 0) threadRemove (); return 0; }
void RpcServerImpl::start() { log_trace("start server"); runmode(RpcServer::Starting); MutexLock lock(_threadMutex); while (_threads.size() < minThreads()) { Worker* worker = new Worker(*this); _threads.insert(worker); worker->start(); } runmode(RpcServer::Running); }