Qué es un Hilo de Ejecución o Thread?
La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.
Ahora un ejemplo práctico usando el lenguaje de programación C# .NET:
Si deseas ver el código fuente da clic en el siguiente enlace:
La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.
Ahora un ejemplo práctico usando el lenguaje de programación C# .NET:
public void MuestraDatos() { for (int i = 0; i < 100; i++) { Console.WriteLine("Hilo Secundario: Registro # {0}", i); // Lo siguiente suspende el subproceso actual // durante un período de tiempo especificado en milisegundos Thread.Sleep(10); } } public void HiloPrincipal() { Console.WriteLine("Hilo principal: va a ejecutar hilo secundario..."); // el constructor de la clase thread requiere que se use // el delegado ThreadStart y como parametro pasar el metodo // a ser ejecutado sobre un hilo: Thread t = new Thread(new ThreadStart(MuestraDatos)); //Para ejecutar el metodo MuestraDatos se usa el metodo start: t.Start(); /* Si usted tiene un solo procesador, el nuevo hilo no consigue tiempo del procesador hasta que el hilo principal prevalezca.. Elimine el comentario Thread.Sleep para permitir a t.Start() ver la diferencia. */ //Thread.Sleep(0); for (int i = 0; i < 4; i++) { Console.WriteLine("Hilo Principal: Está trabajando."); Thread.Sleep(100); } Console.WriteLine("Hilo Principal: llama a t.Join(), para esperar hasta que MuestraDatos Termine."); t.Join(); Console.WriteLine("Hilo Principal: t.Join() ha terminado."); Console.WriteLine("Presione enter para terminar el programa."); Console.ReadLine(); }
Si deseas ver el código fuente da clic en el siguiente enlace:
Comentarios
Publicar un comentario