Cita:
Empezado por eugenio_vb
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
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
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); h2:=MiHilo.Create(True); h3:=MiHilo.Create(True);
h1.Resume; h1.MiFuncion;
h2.Resume; h2.MiFuncion;
h3.Resume; h3.MiFuncion;
end;
Espero se haya entendido.
Saludos...