Ver Mensaje Individual
  #6  
Antiguo 15-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Cita:
Empezado por eugenio_vb Ver Mensaje
Gracias por tu tiempo, tu respuesta me parece muy clara, ahora mi duda sobre tu código es la siguiente:

1.- Si ejecuto externamente MiFuncion (desde otro hilo), MiFuncion al entrar en un bucle while, frenara la ejecucion de Execute hasta terminar el bucle?
Como bien He comentado en el codigo, se supone que primero debe ser ejecutado el procedure Execute antes de MiFuncion,Ojo debes tener en cuenta que en el ejemplo o codigo que te he puesto arriba, se asume que sólo el procedure Execute es el unico que puede hacer terminar a MiFuncion, si por ejemplo la variable "YA" nunca cambiara de de False a True, pues la funcion MiFuncion NUNCA TERMINARIA, asique debes de tener cuidado en ese sentido.
Cita:
Empezado por eugenio_vb Ver Mensaje
2.- Si el propio Execute llama a MiFuncion , entonces si habria un freno a Execute, no??? , ahi es donde encuentro el problema porque Execute no generara las condiciones para salir del bucle.
Todo depende de la variable "YA",por tanto es ilógico(segun mi ejemplo) llamar de un metodo a otro, sabiendo que el metodo que llama al otro es el unico que puede hacerlo terminar., a menos que se codifique algo que hiciera que cambiara la Variable "YA" antes de llamar a MiFuncion desde el Execute.,para que MiFuncion pueda terminar OJO con eso.
Cita:
Empezado por eugenio_vb Ver Mensaje
2.- El ejecutar una funcion externamente de un Hilo hace que se ejecute en el hilo que la llama o en el hilo al que pertenece?
No te entiendo muy bien tu pregunta, pero si és, lo que pienso que quieres decirme, quisas este ejemplo te pueda ayudar:
Código Delphi [-]
var h1,h2,h3:MiHilo;
begin

  h1:=MiHilo.Create(True);//creo una instancia de clase MiHilo
  h2:=MiHilo.Create(True);//creo otra instancia de clase MiHilo
  h3:=MiHilo.Create(True);//creo otra instancia mas de clase MiHilo
 {los tres hilo han sido creado detenido es decir no estan corriendo
  (ver el parametro del Create en la ayuda de Delphi)}
  h1.Resume;//lanzo el hilo 1 o hago que corra,se ejecuta su procedure execute 
  h1.MiFuncion;//llamo a MiFuncion del Hilo 1

  h2.Resume;//lanzo el hilo 2 o hago que corra, se ejecuta su procedure execute
  h2.MiFuncion;//llamo a MiFuncion del Hilo 2

  h3.Resume;//lanzo el hilo 3 o hago que corra,se ejecuta su procedure execute
  h3.MiFuncion;//llamo a MiFuncion del Hilo 3
{Como puedes ver cada Hilo tiene sus Propios metodos
No es lo mismo la funcion MiFuncion del hilo 1 con la del hilo 2 ó 3.
Como bien te he dicho cada uno tiene sus propios metodos y su propia variable "YA"
es lo que se llama Programacion Orientada a Objeto POO
}
end;
Espero se haya entendido.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 15-01-2010 a las 20:05:15.
Responder Con Cita