Example #1
0
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;
    }
Example #2
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);
}