| CSocketThreadManager:: SpawnThreads() |

Private Function | Declared in: SocketThreadManager.h

## Declaration

    void SpawnThreads();

## Description

Spawn the threads

## Function Body

    try
    {
        //Start creating threads
        //Allocate the thread structure
        m_pThreadData=new ThreadData[m_iThreadCount];

        //And initialize it
        memset(m_pThreadData,0,sizeof(ThreadData)*m_iThreadCount);

        //Wait for all threads
        HANDLE* pHandle;
        pHandle=new HANDLE[m_iThreadCount];

        //Reset them
        memset(pHandle,0,sizeof(HANDLE)*m_iThreadCount);

        //Start spawning
        for (int iCounter=0;iCounter<m_iThreadCount;++iCounter)
        {
            //Create an event
            m_pThreadData[iCounter].hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);

            //Save it to our array
            pHandle[iCounter]=m_pThreadData[iCounter].hEvent;

            //Set our instance
            m_pThreadData[iCounter].hInstance=m_hInstance;

            //And create it
            m_pThreadData[iCounter].pThread=COSManager::CreateThread(SocketThread);

            //Check the thread has been created
            if (!m_pThreadData[iCounter].pThread->GetThreadID())
            {
                //Report the error
                ReportError("SpawnThreads","Failed to create thread!");

                //Delete the handle array
                CleanThreads();

                //Quit
                return;
            }
            else
                //Start the thread
                m_pThreadData[iCounter].pThread->Start((LPVOID)&m_pThreadData[iCounter]);
        }

        //Wait for all the handles to finish
        if (WaitForMultipleObjectsEx(m_iThreadCount,pHandle,TRUE,10000,FALSE)==WAIT_TIMEOUT)
            //Report the error
            ReportError("SpawnThreads","Timeout waiting for threads!");

        //Release all the events
        for (iCounter=0;iCounter<m_iThreadCount;++iCounter)
            CloseHandle(pHandle[iCounter]);

        //Delete all the handles
        delete [] pHandle;
    }
    ERROR_HANDLER("SpawnThreads")

## See Also

Class Overview | CSpoofBase | Hierarchy Chart

This web site was generated using Surveyor V4.50.811.1. Click here for more information. | Site content copyright © 2001 Barak Weichselbaum. See the About page for additional notices. This page last updated: 27 Jun 2001.