Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2004
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Una de Sincronismo

Buenas a Todos....

Mi Pregunta es la siguiente:

Tengo un Proceso en una aplicación, k se ejecuta cuando se produce una entrada externa + ó - 8 veces por segundo (cuando hay mucha carga de trabajo), mi intención es parar ese proceso y despues reactivarlo sin k se pare el programa,..... me explico mejor....

Tengo un proceso se ejecuta y cuando llega a una determinada línea si se produce una serie de condiciones kiero k ese proceso se me pare, pero otro proceso k viene por detrás ejecutando el mismo codigo siga su procesamiento e incluso adelantar al anterior...

Ejemplo:

Procedure Tratamiento_Dato(.....);
Begin
...
Proceso 1 // por aki va el proceso 1
...
...
Proceso 2 //Estan ejecutando el msmo proceso
...
End;

yo lo k kiero es en un momento dado es parar (un retraso) el proceso 2 pero k el resto de procesos se sigan ejecutando....

Es un problema de concurrencia..... (Sincronismo)....

Muchas Gracias por Vuestra Colaboración
Responder Con Cita
  #2  
Antiguo 07-02-2004
maruenda maruenda is offline
Miembro
 
Registrado: oct 2003
Ubicación: elche
Posts: 173
Poder: 21
maruenda Va por buen camino
Wink pregunta de examen

vamos a ver. si todos los procesos comparten una variable, entonces hablamos de problemas de concurrencia. hay que evitar que dos procesos modifiquen al mismo tiempo dicha variable. pero si no modifican, ninguna variable, sino que simplemente ejecutan uncodigo, esto es , no comparten ningun recurso, yo usaria semaforos, pero ten en cuenta que si paras un procceso con la orden Wait ( es de C++, no se si existe algo parecido en delplhi ), dicho proceso solo podra ser reactivado por otro proceso . el mismo nunca se puede reactivar. deberias crear un proceso padre, que controle las variables que ocasionan la detencion de los procesos hijos. dicho proceso es el encargado de detener y despertar a los procesos. espero haberte sido de ayuda.
Responder Con Cita
  #3  
Antiguo 07-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Antes de eso... como no lo indicas explicitamente, pues tu programa debiera ser multihilos...

Si no lo es aún, podes ver un ejemplo en la carpeta $delphi\Demos\Threads, y leer en la ayuda sobre TThread.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 08-02-2004
uhilari uhilari is offline
Miembro
 
Registrado: ene 2004
Posts: 21
Poder: 0
uhilari Va por buen camino
Hola Primeramente

Cita:
Empezado por jacguate
como no lo indicas explicitamente, pues tu programa debiera ser multihilos...
Realmente Cierto, deberias leer un poco mas sobre este tema pero pasando a los aspectos tecnicos he de decirte que en delphi para crear un hilo solo debes de crear una nueva clase que sea hija de TThread algo asi:

Código:
TMiHilo=class(TThread)
protected
  procedure Execute; override;
end;

.
.
.

procedure TMiHilo.Execute;
begin
  .
  .
  .
end;
El procedimiento Execute es donde debes poner las ordenes que van a ser sincronizadas con los otros procedimientos.

Cita:
Empezado por maruenda
si todos los procesos comparten una variable, entonces hablamos de problemas de concurrencia. hay que evitar que dos procesos modifiquen al mismo tiempo dicha variable. pero si no modifican, ninguna variable, sino que simplemente ejecutan uncodigo, esto es , no comparten ningun recurso, yo usaria semaforos
En el primer caso que dice Maruenda estoy de acuerdo que debes usar Semaforos aunque como solo son dos procedimientos un Mutex seria mejor, pero en el segundo caso, es decir, si no comparten ningun recurso, no sera necesario que los sincronizes ya que no tendras efectos laterales.

En todo caso seria mejor que revises la demo de Hilos que trae el delphi

Suerte
__________________
La practica y solo la practica hace al maestro
Responder Con Cita
  #5  
Antiguo 08-02-2004
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Continuando con el sincronismo...

Lo k realmente me haria falta es parar un proceso durante un tiempo determinado....

Me gustaría poder parar un proceso 1/2 segundo....., pero no el programa en ejecución (sleep lo he probado y para el programa entero y no kiero eso)


Gracias a todos por vuestro interes....
Responder Con Cita
  #6  
Antiguo 09-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
si ya es multihilos... podes suspender el hilo, con lo que su ejecución queda pausada. Por supuesto debe haber otro hilo que luego haga un resume...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:22:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi