Показать сообщение отдельно

  #4  
Старый 25.10.2009, 00:07
GlooK
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
С нами: 10030823

Репутация: 149
По умолчанию

Цитата:
Сообщение от slesh  
код почти нормальный, но
1) если ты ничего больше с потоками делать не будешь, то сразу закрывай дискриптор потока, а не храни его в массиве
2) прототип функции которая вызывает в потоке чуть другой.
т.е. не function fThread(ptr: pointer):integer;
а function fThread(ptr: pointer):dword; stdcall;
3) после запуска потоков ты должен дождаться их завершения
в твоем случае потоки запустятся, но прога сразу же завершит свою работу.
Для таких вещей можно заюзать функцию WaitForMultipleObjects которая имеет вид;
DWORD WaitForMultipleObjects(
DWORD nCount, // кол-во хендлов
const HANDLE* lpHandles, // адрес массива с хендлами
BOOL bWaitAll, // TRUE - ожидать завершения всех, FALSE - хотябы одного
DWORD dwMilliseconds // таймаут. ставиш INFINITE - бесконечно.
);
1. Как закрыть дескриптор потока?
2. Функция WaitForMultipleObjects должна выглядить так:
WaitForMultipleObjects(количество_акт ивных_потоков, HThread, TRUE, INFINITE)?
Так? т.е. количество активных потоков в моем примере 10.
Я правильно понял?
 
Ответить с цитированием