| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Mar 20 Ene, 2004 5:31 pm Asunto: Limitacion de recursos del sistema para mi aplicacion |
|
|
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 |
|
 |
Roid Cmdr

Registrado: 18 Ene 2004Mensajes: 135
|
Publicado: Mar 20 Ene, 2004 7:09 pm Asunto: |
|
|
Has pensado en lanzar hebras con baja prioridad?.
Un saludo. |
|
| Volver arriba |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Jue 22 Ene, 2004 11:15 pm Asunto: |
|
|
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 |
|
 |
Roid Cmdr

Registrado: 18 Ene 2004Mensajes: 135
|
Publicado: Vie 23 Ene, 2004 9:55 am Asunto: |
|
|
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 |
|
 |
Roid Cmdr

Registrado: 18 Ene 2004Mensajes: 135
|
Publicado: Vie 23 Ene, 2004 10:03 am Asunto: |
|
|
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 |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Vie 23 Ene, 2004 5:47 pm Asunto: |
|
|
Ok... tomo nota de los dos... Muchas gracias
Argone |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Mar 27 Ene, 2004 8:20 am Asunto: |
|
|
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  _________________ "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 |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Mar 27 Ene, 2004 10:22 am Asunto: |
|
|
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 |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Mar 27 Ene, 2004 12:46 pm Asunto: |
|
|
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 |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Mar 27 Ene, 2004 10:48 pm Asunto: |
|
|
ok entendido..es justo lo que buscaba.. muchas gracias
Argone |
|
| Volver arriba |
|
 |
|