• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

WaitForSingleObject

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Я ожидаю завершения процесса с помощью WaitForSingleObject, но эта функция намертво вешает программу (она не обрабатывает сообщения). Чего посоветуете?
 
K

Kernel

На PeekMessage рабочий цикл построй и быстренько в нём опрашивай чего хочеш ... хоть тем же Wait'ом с небольшим ТаймАутом (какие нибудь 30мс сообщения потерпят :) )
ЗЫ (Если опрашиваеш уже не Wait'ом - поставь в цикл Sleep для того чтоб вместо процесса не вешался процессор :) )
 
A

AlexGin

А может сделать так:
:)
MSG msg;
int iCode;

do
{
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{ /* Loop of message-processing: */
DispatchMessage(&msg);
}
iCode = ::WaitForSingleObject:):evntReady.m_hObject, 0);
}while(iCode != WAIT_OBJECT_0);
 
K

Kernel

Если сделать так то загрузка процессора резко возрастёт т.к. данный код занимается ожиданием 0мс. а остпльное время работает - надо поставить у Wait'a хоть небольшую задержку :) + Приложение должно уметь выходить из этого цикла не только когда дождалось, но и когда его пытаются закрыть ...
 
P

prosto_lynx

На PeekMessage рабочий цикл построй и быстренько в нём опрашивай чего хочеш ... хоть тем же Wait'ом с небольшим ТаймАутом (какие нибудь 30мс сообщения потерпят :) )
ЗЫ (Если опрашиваеш уже не Wait'ом - поставь в цикл Sleep для того чтоб вместо процесса не вешался процессор :) )
Вот, тоже подобная проблема, только одно "но": "задержка" не должена превышать 5-10 мс. А Sleep, как показывает практика, при задании задержки округляет её в большую сторону до кратной 16мс. (т.е. в моем случае задержка получается 16 мс.!)
 
E

European

Windows не является системой реального времени, так что никто не может гарантировать четкой поддержи указанных временных интервалов
 
B

biz

European
а какой же системой Windows является?!!
 
E

European

Windows CE является системой "мягкого" реального времени. Десктопные версии - системы с вытесняющей многозадачностью. Про серверные с уверенностью не скажу
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!