![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоки. Waitfor. [D5, WinXP]
dms_main © (2004-10-26 19:34:00)Уважаемые мастера, помогите решить проблему!
Запускаю несколько одинаковых потоков с разными параметрами,
Программе нужно ожидать завершения всех этих потоков.
ставлю waitfor, но он срабатывает только на завершение первого потока.
Что делать???? :-(
Digitman (2004-10-27 08:24:00) [1]
> dms_main © (27.10.04 01:50) [2]
можно поступить проще
организуй глобальную переменную-счетчик трэдов, защити обращение к ней крит.секцией
перед стартом самого первого трэда обнули переменную
каждый стартуемый далее доп.трэд первым делом инкрементирует значение этой переменной, а перед завершением декрементирует
осн.трэд, ожидающий завершения всех стартованных им доп.трэдов, просто ждет в цикле, пока переменная вновь не примет значение 0, не забывая при этом (если нужно) вызывать при каждой итерации метод Application.Processmessages;
Digitman (2004-10-27 08:12:00) [2]
> dms_main © (27.10.04 01:50) [2]
это обыкновенный массив элементов типа THandle
создай такой массив, заполни его значениями свойств Handle каждого из трэдов и передай указатель на массив 2-м параметром в эту ф-цию, а 1-м параметром передай число элементов этого массива
dms_main (2004-10-27 01:50:00) [3]а что есть PWOHandleArray и как с ним работать?
clickmaker (2004-10-26 19:47:00) [4]WaitForMultipleObjects