Multiple Threads
От: val_133  
Дата: 24.09.03 07:18
Оценка:
Господа. Задачка следующая: надо создать несколько совершенно одинаковых срэдов(нитей) с одним и тем же обработчиком и что бы они одновременно работали.
В данном примере они создаются, но обрабатываются по очереди есть 2 thread работает по завершении первого и так далее...
Надо что бы работали одновременно. Подскажите как сделать.


void CreateThreads()
{
     HANDLE hThread0=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait1,0,NULL);
     HANDLE hThread1=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait2,0,NULL);
     HANDLE hThread2=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait3,0,NULL);
     ...............
     ...............
}

DWORD WINAPI  TimeOutThread(HANDLE lpParameter)
{
    DWORD resp=WaitForSingleObject(lpParameter,MAX_WAIT_RESPONSE);
    if(resp==WAIT_TIMEOUT){
           ...........
    }
    return 0;
}



24.09.03 15:28: Перенесено модератором из 'C/C++' — ПК
Re: Multiple Threads
От: Tan4ik Россия  
Дата: 24.09.03 08:58
Оценка:
Здравствуйте, val_133, Вы писали:

v>Господа. Задачка следующая: надо создать несколько совершенно одинаковых срэдов(нитей) с одним и тем же обработчиком и что бы они одновременно работали.

v>В данном примере они создаются, но обрабатываются по очереди есть 2 thread работает по завершении первого и так далее...
v>Надо что бы работали одновременно. Подскажите как сделать.


v>
v>void CreateThreads()
v>{
v>     HANDLE hThread0=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait1,0,NULL);
v>     HANDLE hThread1=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait2,0,NULL);
v>     HANDLE hThread2=CreateThread(0,0,MtlTimeOutThread,(HANDLE)hWait3,0,NULL);
v>     ...............
v>     ...............
v>}

v>DWORD WINAPI  TimeOutThread(HANDLE lpParameter)
v>{
v>    DWORD resp=WaitForSingleObject(lpParameter,MAX_WAIT_RESPONSE);
v>    if(resp==WAIT_TIMEOUT){
v>           ...........
v>    }
v>    return 0;
v>}
v>


DWORD WINAPI MtlTimeOutThread(HANDLE lpParameter)
{
    DWORD resp=WaitForSingleObject(lpParameter,MAX_WAIT_RESPONSE);
    if(resp==WAIT_TIMEOUT){
        while (1)
        {
            printf("%d\n",(DWORD)lpParameter);
            Sleep(1);
        }
    }
    return 0;
}


Работают очень даже параллельно.
---
С уважением,
Лазарев Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.