Class CThreadPool::
SpawnThreads()
Base ClassesData ItemsConstructorsDestructorsFunctionsCustom CodeGo to hierarchy chart    Prev page: SetSleepIntervalNext page: SubmitJob    Show member index
Private Function Declared in:
ThreadPool.h

'Declaration' icon -- Shortcut to top of page. Declaration

BOOL SpawnThreads(
    LPInitializePoolProc pInitializeProc,
    CGenericThread::ThreadPriority aPriority);

'Description' icon -- Shortcut to top of page. Description

Create the threads

'Function Body' icon -- Shortcut to top of page. Function Body

try
{
    //Create the thread list
    m_ppThreads=new CGenericThread*[m_ulThreadCount];

    //Create the thread data
    m_ppThreadData=new ThreadData*[m_ulThreadCount];

    //Clear the data
    memset(m_ppThreads,
           0,
           sizeof(CGenericThread*)*m_ulThreadCount);
    memset(m_ppThreadData,
           0,
           sizeof(ThreadData*)*m_ulThreadCount);

    //Our waiting list
    CWaitList aWaitingList;

    //Create each thread
    for (int iCount=0;iCount<m_ulThreadCount;++iCount)
    {
        m_ppThreadData[iCount]=new ThreadData;

        //Create the event
        m_ppThreadData[iCount]->pEvent=COSManager::CreateEvent();
        m_ppThreadData[iCount]->pExitEvent=COSManager::CreateEvent();

        //Add it to the waiting list
        aWaitingList.AddObject(m_ppThreadData[iCount]->pEvent,TRUE);

        //Set our class
        m_ppThreadData[iCount]->pClass=this;

        //The initialize proc
        m_ppThreadData[iCount]->pInitializeProc=pInitializeProc;

        //Create the thread
        m_ppThreads[iCount]=COSManager::CreateThread(PoolThread);

        //Set the priority
        m_ppThreads[iCount]->SetPriority(aPriority);

        //Start it
        m_ppThreads[iCount]->Start((LPVOID)m_ppThreadData[iCount]);
    }

    //Did we have an error
    BOOL bError;
    bError=FALSE;

    //Wait for all the handles to finish
    DWORD dwTmp;
    if (aWaitingList.Wait(TRUE,
                          dwTmp,
                          THREAD_TIMEOUT))
    {
        //Report the error
        ReportError("SpawnThreads","Timeout waiting for threads!");

        //Indicate it
        bError=TRUE;
    }

    //Done
    return !bError;
}
ERROR_HANDLER_RETURN("SpawnThreads",FALSE)

'See Also' icon -- Shortcut to top of page. See Also

Class Overview Class Overview  |  Public base class CErrorHandler  |  Hierarchy Chart Hierarchy Chart


Get Surveyor!This web site was generated using Surveyor V4.50.811.1.  Click here for more information. Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003.