WaitForSingleObject

Тема в разделе "MS Visual C++", создана пользователем Guest, 11 ноя 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

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

    Kernel Гость

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

    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);
     
  4. Kernel

    Kernel Гость

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

    prosto_lynx Гость

    Вот, тоже подобная проблема, только одно "но": "задержка" не должена превышать 5-10 мс. А Sleep, как показывает практика, при задании задержки округляет её в большую сторону до кратной 16мс. (т.е. в моем случае задержка получается 16 мс.!)
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Windows не является системой реального времени, так что никто не может гарантировать четкой поддержи указанных временных интервалов
     
  7. biz

    biz Гость

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

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

Поделиться этой страницей