PDA

Ver la Versión Completa : Ayuda con prioridad de un Thread..


Novatin
27-05-2013, 15:46:14
Que tal amigos, acá sigo trasteando con Builder C++ 6..

Sucede que hago una aplicación en la que uso un objeto TThread de Builder... el cual me funciona aceptablemente; sin embargo para mejorar el rendimiento intento subirle la prioridad al programa para lo cual estoy usando:

miHilo->Priority=THREAD_PRIORITY_ABOVE_NORMAL;

El mismo no me genera error ni nada parecido; y todo parece estar funcionando; sin embargo al ejecutar el programa y usar el "Administrador de Tareas de Windows" (Ctrl+Alt+Del), en la ficha referente a "Procesos" y encontrar mi aplicación "Project1.exe", en sus opciones de establecer prioridad, la misma aún se encuentra marcada con una prioridad "Normal"... esto funciona así? no debería acaso marcarme la opción "Arriba de lo Normal" o me falta activar algo más?

De antemano gracias por su ayuda.

defcon1_es
27-05-2013, 17:55:57
sin embargo al ejecutar el programa y usar el "Administrador de Tareas de Windows" (Ctrl+Alt+Del), en la ficha referente a "Procesos" y encontrar mi aplicación "Project1.exe", en sus opciones de establecer prioridad, la misma aún se encuentra marcada con una prioridad "Normal"... esto funciona así? no debería acaso marcarme la opción "Arriba de lo Normal" o me falta activar algo más?

Hola. No estoy muy "curtido" en el tema de hilos, pero lo que estás haciendo es cambiar la prioridad a uno de los hilos de tu aplicación, no a la aplicación en si,
por eso en el "Administrador de Tareas de Windows", que muestra la prioridad de las aplicaciones, no ves ese cambio reflejado.

Mira los enlaces que hay al final de la página y estos, que aunque sean para Delphi, te pueden servir:


Los Hilos de Ejecución (1) (http://delphiallimite.blogspot.com.ar/2009/05/los-hilos-de-ejecucion-1.html)
Los Hilos de Ejecución (2) (http://delphiallimite.blogspot.com.ar/2009/05/los-hilos-de-ejecucion-2.html)
Threading in Delphi (http://delphi.about.com/od/kbthread/Threading_in_Delphi.htm)
Synchronizing Threads and GUI in Delphi application (http://delphi.about.com/od/kbthread/a/thread-gui.htm)

ecfisa
27-05-2013, 18:07:14
miHilo->Priority=THREAD_PRIORITY_ABOVE_NORMAL;
...
sin embargo al ejecutar el programa y usar el "Administrador de Tareas de Windows" (Ctrl+Alt+Del), en la ficha referente a "Procesos" y encontrar mi aplicación "Project1.exe", en sus opciones de establecer prioridad, la misma aún se encuentra marcada con una prioridad "Normal"... esto funciona así? no debería acaso marcarme la opción "Arriba de lo Normal" o me falta activar algo más?

Hola Novatin.

En realidad, lo que se está mostrando en la ventana Establecer prioridad es la del proceso.
Agregá un botón con este código en el evento OnClick:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS); // <- !
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_HIGHEST);
}

Ejecutalo y revisá nuevamente la ventana Establecer prioridad.

Saludos. :)

Edito: Atendí el tel. y no ví el mensaje de defcon1_es. Coincido con su apreciación del motivo.

Novatin
27-05-2013, 19:32:54
Tomé tus consejos defcon1_es ,y me leí los links (con lo extraño que me parece el código en delphi)... y justo cuando creí que había comprendido correctamente, puse en prueba en un nuevo Form el código que indicó ecfisa:

codigo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS); // <- !
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_HIGHEST);
}

Y pasa que nada...! le di de "clickazos" al "Button" y nada! :mad:
y aún lo puse dentro del TForm1::Create(), y la prioridad de la aplicación (revisada desde el Administrador de Win") sigue en "Normal"...

Algún detalle más que debería tomar en cuenta?

ecfisa
27-05-2013, 19:45:05
Hola Novatin.

Mis disculpas, lo escribí de memoria y se me mezcló Delphi con Builder C++ :o


void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
}


Saludos. :)

Novatin
27-05-2013, 22:11:07
ecfisa, Dicen por ahi que: "Al mejor cazador se le va la liebre..." o los paréntesis..

Ahora si ya me Funciono!:p
Aunque lo raro es que Builder haya filtrado el detallito ese.. :eek:

Pero vale, con el ejemplo ya tengo para distraerme un rato..

Saludos y Gracias por todo.