Приоритет выполнения (Builder C++)

Тема в разделе "WASM.BEGINNERS", создана пользователем bacho_sun, 5 авг 2005.

  1. bacho_sun

    bacho_sun New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2005
    Сообщения:
    8
    Мне нужно установить низкий приоритет выполнения моей программы, а то когда я ее запускаю (тот код который в кнопке) она поедает все ресурсы и остальное уже не возможно делать – все тормозит..

    Я нашол код..вставил его в начало проги

    __fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    {

    SetPriorityClass(GetCurrentThread(), THREAD_PRIORITY_LOWEST);



    Но не рабобтает.... может я не туда вставил или не то ?



    Подскажи если в курсе, как установить моей программе низкий приоритет выполнения?

    Так чтобы я мог нормально работать с другими программами ?

    Если ктоможет скинте исходник.
     
  2. Prism

    Prism New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2005
    Сообщения:
    10
    SetPriorityClass устанавливает приоритет для процесса и вызывается так:
    Код (Text):
    1. SetPriorityClass(GetCurrentProcess(),IDLE_PRIORITY_CLASS);


    Для изменения приоритета потока юзай SetThreadPriority().
     
  3. bacho_sun

    bacho_sun New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2005
    Сообщения:
    8
    Тоесть в кнопку вставить SetThreadPriority(); ?
     
  4. noonv

    noonv Member

    Публикаций:
    0
    Регистрация:
    19 июл 2005
    Сообщения:
    209
    Адрес:
    Russia
    вынести код выполнения в отдельный процесс, для которого можно установить низкий приоритет вышеприведённой функцией.
     
  5. bacho_sun

    bacho_sun New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2005
    Сообщения:
    8
    А как вынести код в отдельный процесс ?
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Наверное лучше не процесс отдельный, а отдельный поток.

    То место, где вызывается твоя функция, пожирающая ресурсы, замени на такой код:


    Код (Text):
    1. hThread1 = CreateThread(NULL, 0, New_Thread, NULL, 0, &ThreadId1);




    а вызов твоей тяжелой функции осуществляй из этого потока:
    Код (Text):
    1. void New_Thread(LPARAM lParam){
    2.     //установка приоритета нового потока
    3.  SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);
    4.  
    5.     //запуск тяжёлой функции
    6.     MyFunc();
    7. }