|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
|
verus84 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.10.2015 Репутация: нет Всего: нет |
Есть несколько потоков которые ожидают Event, но тут есть одна проблема что при вызове PulseEvent потоки не всегда успевают перейти в ожидание, в этом примере после создания потоков делаем задержку 1500мс и все работает, но как сделать по-нормальному?
Ни чего кроме как ZwQuerySystemInformation(SYSTEM_PROCESSES_AND_THREADS_INFORMATION) и там уже проверять в каком состоянии поток находится больше в голову не приходит, но этот способ не сказал бы что лучше т.к. еще и в цикле придется проверять и ждать.
|
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
а почему не SetEvent? ну и после него дождаться окончания всех потоков.
-------------------- Обижено школьников: 8 |
|||
|
||||
Sajtran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 15.10.2008 Где: Мегион Репутация: нет Всего: 2 |
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Мое мнение, что задача больше похожа на семафор. Взводим семафор на число потоков и каждый поток гарантированно отработает по разу. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
verus84 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.10.2015 Репутация: нет Всего: нет |
Семафор не подходит, нужно что бы выполнилось только один раз и опять перешло к ожиданию нового эвента, в моем случае так и происходит и из-за этого приходтся использовать PulseEvent, а не SetEvent .
|
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Можно 2 семафора поставить. 1 на начало операции. 1 на конец.
1) Оба семафора по нулям. 2) 1й семафор сигнализируем по числу потоков. 3) ждем окончания работы потоков 4) 2й семафор сигнализируем по числу потоков. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |