Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Limitacion de recursos del sistema para mi aplicacion

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Limitacion de recursos del sistema para mi aplicacion Responder citando

Hola compañer@s,

Me gustaria saber como hacer para que una aplicacion que estoy diseñando no se coma todos los recursos del sistema. Me explico.... mi aplicacion cuando se esta ejecutando y trabajando me ralentiza mucho el equipo y me gustaria que esto no fuera asi. Alquien sabe como resolverlo? Evidentemente veo necesario que mi aplicacion tarde mas tiempo en realizar la tarea asignada..pero el tiempo no es problema.. Muchas gracias

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Has pensado en lanzar hebras con baja prioridad?.

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Pues la verdad es que no... en realidad no se como funcionan las hebras... Supongo que realizaran algo por el estilo a como funciona el programa SETI.. que ocupa toda los recursos libres que dejan el resto de procesos.

Puedes darme un poco mas de informacion? En que consisten las hebras y algun ejemplo de como se programan.. muchas gracias

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ahi te pongo un esquemilla:

class THebraProductor : public TThread
{
private:
TListBox *MiLista;
protected:
void __fastcall Execute();
public:
__fastcall THebraProductor(TListBox *Lista);
};
__fastcall THebraProductor::THebraProductor(TListBox *Lista)
: TThread(false)
{
//Prioridades de la hebra
//enum TThreadPriority {tpIdle, tpLowest, tpLower, tpNormal, tpHigher, //tpHighest, tpTimeCritical};

Priority = tpNormal;
FreeOnTerminate = true;
MiLista=Lista;

}
//---------------------------------------------------------------------------
void __fastcall THebraProductor::Execute()
{
//Codigo q se ejecuta cuando lanzas la hebra

}

//Creas la hebra
THebraProductor * Productor;

//Lanzas la hebra
Productor=new THebraProductor(Lista);

//Te Cargas la hebra
Productor->Terminate();

Un saludo,espero q te sea de ayuda.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Una hebra es un proceso dependiente del proceso principal, normalmente se usa para programacion concurrente, osea lanzar varios procesos al mismo tiempo y se sincronizan mediante semaforos.

La diferencia entre hebras y procesos hijos(esto es otra historia), es q las hebras comparten memoria con el programa principal y los procesos hijos no comparte memoria y la forma de sincronizacion es mediante paso de mensajes.



Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ok... tomo nota de los dos... Muchas gracias

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Argone, prueba con el siguiente codigo:

Dar prioridad Maxima:

Código:
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);


Dar Prioridad Normal:

Código:
SetPriorityClass(GetCurrentProcess, NORMAL_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL);


Bajar Prioridad:

Código:
SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_IDLE);



Y te dejo el resto de los parametros con los que puedes jugar, ordenados desde menor a mayor prioridad:

Parametros para SetPriorityClass:

IDLE_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS


Parametros para SetThreadPriority:

THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_HIGHEST

THREAD_PRIORITY_IDLE
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_TIME_CRITICAL


Bueno eso, espero te sirva, Saludos Wink
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Una duda Victor....

Código:

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);


Al ejecutar esto entiendo que tomas todos los procesos con Realtime_priority... y que luego con el setTheradPriority todos estos procesos los pongo a la prioridad que yo selecciono.... Es de esta forma?

Yo estoy interesado en bajarle la prioridad a un unico proceso... se puede hacer esto con este metodo? Muchas gracias

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo que haces es cambiar la prioridad a tu aplicacion completa... no a un "subproceso" de ella, como al menos yo te entendi en tu post, si quieres dar baja a una prioridad tienes que seguir el consejo de alguien que te respondio mas arriba y usar una hebra (thread), a la cual puedes dar menor prioridad...

Saludos!
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

ok entendido..es justo lo que buscaba.. muchas gracias

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.