Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Мурзик

CreateProcess - проблема! WaitForMultipleObjects...

10.04.2011, 12:38. Показов 1723. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запускаю программу через CreateProcess. Как дождаться завершения всех потоков в этой программе, т.е. как использовать WaitForMultipleObjects?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2011, 12:38
Ответы с готовыми решениями:

CreateProcess WaitForMultipleObjects...
У меня создается один дочерний процесс как переделать код, чтобы создавалось несколько дочерних процессов и завершались они...

Проблема с CreateProcess
Здравствуйте! Вопрос у меня, наверное не самый простой. Есть у меня функция : function RunCommand(s: string): string; var ...

Не работает WaitForMultipleObjects
Суть программы такова: запускаем ее из командной строки,предварительно указав путь до нее, присылаем как параметры названия стандартных...

4
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
10.04.2011, 14:55
Создай событие с помощью CreateEvent и начальным значением FALSE. (в том потоке который запускает процесс).

Делай WaitForSingleObject на это событе пока не будет равно WAIT_OBJECTS_0. (WaitForMultipleObjects отличается только тем, что ждет сразу несколько объектов (в аrray)).

В запущеном потоке перед выходом запусти SetEvent на это событие.

Вот и все.
0
Мурзик
10.04.2011, 15:06
А можно пример? Мне например надо запустить program.exe и дождаться завершения всех потоков.
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
10.04.2011, 15:25
Прмер на Си, но ...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
HANDLE g_exit_event 
 
int main(int argc, char* arg[])
{
    // main procecc
    HANDLE hThread ;
    DWORD  tID ;
 
    g_exit_event = CreateEvent(NULL, TRUE, FALSE, NULL);
 
    hThread= CreateThread (0, 0,ThreadFunc, 0, 0, &tID) ;
 
    while( WaitForSingleObject(g_exit_event, 100)==WAIT_OBJECT_0)
    ;
 
    printf("Program finished") ;
 
    return 0 ;
}
 
DWORD   WINAPI  ThreadFUnc(LPVOID lpArgs) 
{
    // do all what you need here
 
    SetEvent(g_exit_event) ;
 
    return 0 ;
}
0
Messir
10.04.2011, 22:59
Нужно просто сохранять хэндлы всех созданных потоков в массив, потом в главном потоке сделать WaitForMultipleObjects для этого массива с параметром WaitAll = True
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2011, 22:59
Помогаю со студенческими работами здесь

Пайпы и WaitForMultipleObjects
Добрый день. Имеется несколько пайпов, созданных через CreatePipe. В каждый из них перенаправляется вывод консоли дочерних процессов....

Функция WaitForMultipleObjects
Здравствуйте! В программе есть несколько процедур, которые выполняются за определённое время (по окончанию работы они выставляют...

Утечка памяти в WaitForMultipleObjects
Добрый день Возникла проблема при вызове WaitForMultipleObjects. Каждый раз при ее вызове программа отжирает ~300 килобайт памяти. Т.к....

Функция WaitForMultipleObjects выбрасывает поток
Всем привет. Создаю поток( пусть будет поток А ) и ожидаю события на WaitForMultipleObjects. Одновременно считываю из звуковой карты данные...

WaitForMultipleObjects в моих кривых руках не работает
Доброго, почитал много тем на stackoverflow и в гугле но все же чето не выходит подождать потоки, либо ждет только один. Все хендлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru