SlideShare una empresa de Scribd logo
Integrantes
Luis FelipeZacaríasGuzmán
Alejandro JavierRomero Rosas
Karen Zamora Hernández
Ana IvonneToral Morales
JoséGuillermo PájaroCoatl
DanielAlonso Calvario
Bruno Salgado Mejía
Funcionamiento de hilos
• Todos los hilos se les asigna un tiempo de
ejecución apropiado y que todos aquellos
hilos que estén bloqueados o pausados no
consuman tiempo de CPU.
• En un ordenador con un solo procesador, un
programador de hilos gestiona una
alternancia rápida entre los hilos activos,
derivando en un comportamiento
entrecortado
• La asignación de tiempo para cada hilo está
en el orden de las decenas de milisegundos.
Hilos y procesos
• Todos los hilos dentro de una aplicación
están dentro de un proceso.
• La diferencia principal es que los procesos
están completamente aislados unos de otros
• los hilos comparten memoria con otros hilos
que pertenecen al mismo proceso
• Un hilo puede estar generando datos en un
segundo plano mientras que otro hilo
muestra los datos que van llegando.
Procesos y subprocesos
• Para que un proceso sea capaz de hacer
• algo, el proceso debe ser propietario de un hilo
(thread).
• Este thread es el responsable de ejecutar el
código contenido en el espacio de direcciones del
proceso.
• un proceso puede contener varios threads y todos
ellos ejecutando código “simultáneamente "en el
espacio de direcciones del proceso
• cada thread tiene su propia colección de
registros de la CPU y su propio stack (pila de
almacenamiento)
• threads se ejecutan concurrentemente al
asignar ‘rodajas de tiempo’ (time slices)
llamadas quantums a cada thread
alternativamente (y consecutivamente).
• cada quantum es de 15 milissegundos.
Administración de procesos
• Process es un componente que nos permite
• Iniciar
• detener
• controlar
• supervisar aplicaciones.
Administración de hebras y hilos
• El ámbito System.Threading proporciona en
la plataforma .NET las clases e interfaces
para escribir código multihebra.
• Cada hebra con un proceso
• Si el proceso crea más hebras, será
multihebra(multithreading)
Por que son útiles las hebras
• En primer lugar, cuando hay una tarea de
fondo. Imagine que quiere poner un logotipo
que gire en la parte superior izquierda del
formulario.
• En segundo lugar, cuando esta realizando
más de una tarea a la vez Podría dividir la
imagen en cuatro partes y ejecutar las
cuatro copias en la rutina de procesado de
imagen
La clase Thread
PROPIEDADES
• CurrentPrincipal
• CurrentThread
• IsAlive
• IsBackground
• Name
• Priority
• ThreadState
METODOS
• Abort
• Interrupt
• Join
• Resume
• Sleep
• Start
• Suspend
Control de las hebras
• Llame a su método Start() para comenzar la
ejecución
• Terminar una hebra puede llamar al método
Abort().
• Los métodos Suspend() y Resume() se pueden
utilizar para parar temporalmente la ejecución
de una hebra y a continuación reiniciarla de nuevo
• Sleep() se utiliza para poner una hebra a dormir
durante un periodo de tiempo, normalmente
especificado como un número de milisegundos.
Estados y prioridad de las hebras
La enumeración ThreadState, describe los posibles
estados que puede tener una hebra:
Elementos
• Aborted
• AbortRequested
• Background
• Running
• Stopped
• StopRequested
• Suspended
• SuspendRequested
• Unstarted
• WaitSleepJoin
• Un elemento de la enumeración ThreadPriority,
cuyos valores son:
Elemento
• Hightest
• AboveNormal
• Normal.
• BelowNormal
• Lowest
Sincronización de hebras
• compartidos y por la temporización.
• cada función de la hebra tiene su propio
conjunto de variables locales, puesto que las
variables locales se declaran en la pila
• variables locales no pueden interferir con
otras, porque se
• crean en diferentes pilas.
Las clases sin sincronización
• La clase Interlocked contiene cuatro métodos de
hebra segura compartidos para realizar
operaciones con variables
• estos métodos son atómicos, por lo que no se
pueden
• interrumpir por cambios de contexto de hebras:
• Increment: Incrementa una variable.
• · Decrement: Disminuye una variable.
• · Exchange: Pone una variable a un valor y
devuelve el valor original.
• · CompareExchange: Compara dos valores y
reemplaza el valor destino si son iguales
¿Qué es multithreading?
• El multithreading es manejado internamente por
un programador de threads, una función que el
CLR típicamente delega el sistema operativo.
• Un programador de threads se asegura que
todos los threads activos se encuentren
apropiadamente dispuestos en tiempo de
ejecución, y que los threads que se encuentran
bloqueados - por ejemplo por un bloqueo
exclusivo, o esperando una entrada del usuario -
no consuman recursos de tiempo del CPU.
Threads vs. Procesos
• Todos los threads de una aplicación se
encuentran contenidos en proceso – la unidad
del sistema operativo en la cual una aplicación
corre.
• Los threads tiene ciertas similitudes con los
procesos – por ejemplo los procesos corren bajo
time-sliced con otros procesos en la
computadora de un modo similar a los threads
en una aplicación C#.
• La principal diferencia es que los procesos se
encuentran totalmente aislados de otros
procesos, mientras que los threads comparten el
montículo de memoria (heap) con otros threads
de la misma aplicación.
• Esto hace que los threads sean muy útiles: un
thread puede recuperar datos en segundo plano,
mientras que otro thread va mostrando los datos
mientras llegan.
¿Cuándo utilizar Threads?
• Una aplicación común para el multithreading es
la ejecución en segundo plano de tareas que
consumen mucho tiempo. El thread principal se
mantiene corriendo mientras que el thread que
realiza la operación funciona en segundo plano.
• En aplicaciones Windows Forms, si el thread
principal realiza operaciones largas, los mensajes
del teclado y el mouse no pueden ser
procesados, como resultado la aplicación deja de
responder.
• Por esta razón es bueno hacer que las tareas que
insumen mucho tiempo funcionen en threads de
trabajo y en todo caso el thread principal puede
mostrar el diálogo modal “Procesando… espere
por favor” en caso que el programa no pueda
continuar hasta que la tarea termine.
• Esto asegura que la aplicación no sea tomada
por el sistema operativo como "No responde"
incitando al usuario a forzar la finalización del
proceso!
• El diálogo modal permite implementar un botón
"Cancelar" ya que el diálogo continúa recibiendo
eventos mientras que la tarea es realizada por el
hilo trabajador.
• En el caso de las aplicaciones in interfaz gráfica,
como los servicios de Windows, el
multithreading toma particular importancia
cuando una tarea es potencialmente
consumidora de tiempo porque se encuentra a la
espera de la respuesta de otra computadora
(como un servidor de aplicaciones, un servidor
de base de datos, o un cliente).
• Tener un thread trabajador realizando dicha
tarea significa que el thread que lo instancia se
encontrará inmediatamente libre para hacer
otras cosas.
• Otra aplicación del multithreading es utilizarlo en
métodos que realizan cálculos intensivos. Tales
métodos pueden ejecutarse más rápido en
computadoras con múltiples procesadores si la
carga de trabajo es dividida en múltiples threads.
• La cantidad de procesadores puede obtenerse
por medio de la propiedad
Environment.ProcessorCount.
• Una aplicación C# puede convertirse en multi
thread de dos maneras:
• Creando explícitamente threads adicionales, o
utilizando características del framework .NET
que implícitamente crean threads – como
BackgroundWorker, thread pooling, un threading
timer, un Remoting server, o un Web Services o
una aplicación ASP.NET.
• En estos últimos casos no se tiene control del
multithreading.
¿Cuándo no utilizar Threads?
• El multithreading posee desventajas. La más
grande es que implica mayor complejidad en los
programas. La creación de una aplicación
multiples threads no es compleja, la complejidad
se encuentra en la interacción entre los threads.
• Esto es así cuando la interacción es válida o no, y
puede derivar en largos procesos de desarrollo y
la consecuente susceptibilidad de intermitentes
y difícilmente reproducibles bugs.
• Por esta razón es recomendable mantener el
diseño de la interacción entre los múltiples
threads simple – o no utilizar multithreadingl – a
menos que tangas una peculiar inclinación por
re-ecribir y debuggear!
• El multithreading también implica consumo de
recursos y costo de CPU en crear y cambiar entre
threads si es utilzado en exceso.
• En particular, cuando implica pesados procesos
de lectura/escritura a disco, puede ser más
rápido tener uno o dos threads trabajadores
realizando las tareas en secuencia en lugar de
tener múltiples threads trabajando en
simultáneo.
Creando e iniciando Threads
• Los threads utilizando el constructor de la clase
Thread, pasándole un delegado del tipo
ThreadStart– indicando el método desde donde
debe iniciar la ejecución. Aquí vemos la definición
del delegado ThreadStart:
• public delegate void ThreadStart();
• Llamando al método Start logramos que la ejecución
comience. El thread continúa hasta que su método
retorne, en este punto el thread finaliza.
• Aquí vemos un ejemplo utilizando la sintaxis larga
de C# para crear el delegado TheadStart:
• class ThreadTest
{
static void Main()
{
Thread t = new Thread (new ThreadStart (Go));
t.Start();
new thread.Go(); // Corre
simultaneamente Go() en el thread principal.
}
static void Go()
{
Console.WriteLine ("hello!");
}
• Se puede crear un thread de un modo más
conveniente utilizando la sintaxis corta de C#
para instanciar delegados:
• static void Main()
{
Thread t = new Thread (Go); // No es
necesario utilizar explícitamente ThreadStart
t.Start();
...
}
static void Go()
{
...
}
• En este caso el delegado ThreadStart es inferido por el
compilador. Otro método es utilizar un método anónimo
para iniciar un thread:
• static void Main()
{
Thread t = new Thread (delegate()
{
Console.WriteLine ("Hello!");
}
);
t.Start();
}
• Un thread tiene su propiedad IsAlive en valor true
después de llamar a su método Start(), hasta que el
thread finaliza. Una vez finalizado un thread no puede
ser re-iniciado.
Pasando datos a ThreadStart
• En ejemplo de arriba queremos distinguir mejor
la salida de cada thread, por ejemplo haciendo
que uno de ellos imprima en mayúscula.
• Podemos lograr esto pasando un flag al método
Go: pero no podemos usar el delegado
ThreadStart porque no acepta argumentos.
Afortunadamente en framework .NET define otra
versión del delegado llamada
ParameterizedThreadStart, la cual acepta un
objeto como parámetro del siguiente modo:
• public delegate void ParameterizedThreadStart (object obj);
• Entonces el ejemplo previo se ve así:
• class ThreadTest
{
static void Main()
{
Thread t = new Thread (Go);
t.Start (true);
Go (true)
Go (false);
}
static void Go (object upperCase)
{
bool upper = (bool) upperCase;
Console.WriteLine (upper ? "HELLO!" : "hello!");
}
}
•
hello!
HELLO!
• En este ejemplo el compilador infiere automáticamente el
delegado ParameterizedThreadStart porque el método Go
acepta un objeto como argumento.
• Podríamos haberlo escrito:
Thread t = new Thread (new ParameterizedThreadStart (Go));
t.Start (true);
Nombrando Threads
• Se puede asignar nombre a un thread a través de
su propiedad Name. Esto es de gran beneficio en
la depuración: y también permite hacer
Console.WriteLine nombre del thread, Microsoft
Visual Studio recoge el nombre del thread y lo
muestra en la barra de herramientas Debug
Location.
• Podemos nombrar un thread en cualquier
momento, pero sólo una vez, en caso de intentar
cambiar el nombre de un thread obtendremos
como resultado una excepción.
• También podemos asignarle nombre al thread principal de la aplicación,
en el siguiente ejemplo hacemos esto a través de la propiedad estática
CurrentThread:
class ThreadNaming
{
static void Main()
{
Thread.CurrentThread.Name = "main";
Thread worker = new Thread (Go);
worker.Name = "worker";
worker.Start(); Go();
}
static void Go()
{
Console.WriteLine ("Hello from " + Thread.CurrentThread.Name);
}
}
•
Hello from main
Hello from worker
Threads en primer y segundo
plano
• Por defecto los threads corren en primer plano,
esto quiere decir que la aplicación siguirá
corriendo mientras que alguno de sus threas se
encuentre activo.
• C# soporta threads en segundo plano
(background threads) los cuales no mantiene la
aplicación corriendo por si mismo, sino que
terminan inmediatamente cuando la aplicación
finaliza.
• Cambiar un thread de primer a segundo plano
no cambiar su estado o prioridad en la
planificación del CPU de ninguna manera.
La propiedad IsBackground del thread controla el
modo de ejecución como en el siguiente
ejemplo:
• class PriorityTest
{
static void Main (string[] args)
{
Thread worker = new Thread (delegate() {
Console.ReadLine();
});
if (args.Length > 0) worker.IsBackground = true;
worker.Start();
}
}
• Si llamamos al programa sin pasarle argumentos
el thread de trabajo corre en su modo por
defecto de primer plano y esperará en la
instrucción ReadLine hasta que el usuario
presione Enter. Mientras tanto el thread
principal deja de existir pero la aplicación sigue
corriendo porque existe un thread en primer
plano todabía vivo.
• Por otro lado, si un argumento es pasado al
thread principal (Main()) el thread de trabajo es
ejecutado en segundo plano y el programa deja
de existir cuando el thread principal termina,
finalizando la instrucción ReadLine.
• Cuando un hilo en segundo plano termina de
este modo, todos los bloques finally son
ignorados. Ya que no es deseable ignorar los
bloques finally es una buena práctica esperar a
que todos los threads de trabajo terminen antes
de finalizar la aplicación – posiblemente con un
timeout (esto puede lograrse utilizando
Thread.Join). Si por alguna razón un thread
renegado nunca termina, podemos intentar
abortarlo, y si esto falla, abandonar el thread
permitiendo que muera con el proceso.
• Tener threads en segundo plano puede ser
beneficioso, por la razón que es posible que el
último diga cuando la aplicación debe terminar.
Consideremos la alternativa - un thread en
primer plano que no muere - evitando que la
aplicación termine. Un thread en primer plano
olvidado es particularmente dañino en
aplicaciones Windows Form, porque la
aplicación aparentará terminar (el menos para el
usuario) pero el proceso continuará corriendo.
Preguntas…
• ¿Qué es un proceso y subproceso?
• ¿Qué es un thread?
• ¿Cuál es la diferencia entre estos dos?
• ¿Qué librería se utiliza para poder usar threads?
• ¿Cuáles son algunas de las propiedades de la clase thread?
• ¿Cuándo utilizamos los threads?
• ¿Cuándo no es necesario utilizar threads?
• ¿Qué es multithreading?
• ¿Cuáles son algunos estados y prioridades de los threads?
• Cuando creamos un thread ¿Qué tiempo es asignado para
cada hilo?
Gracias por su atención !!!

Más contenido relacionado

La actualidad más candente

Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
Manuel Miranda Buenabad
 
Documentación de sistemas
Documentación de sistemasDocumentación de sistemas
Documentación de sistemas
Gladys Rodriguez
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
José Antonio Sandoval Acosta
 
ARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdfARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdf
DavidVeraOlivera
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
José Antonio Sandoval Acosta
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
J M
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
pineda2
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
Angel Miguel Coria Lopez
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
monty19
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
Luis Eduardo Aponte
 
Comparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y DistribuidaComparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y Distribuida
Sergio Olivares
 
Sistema E S
Sistema E SSistema E S
Sistema E S
Henry Guarnizo
 
Transacciones
TransaccionesTransacciones
Transacciones
Daniel Antonio Cruz
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
José Antonio Sandoval Acosta
 
Instalacion de un (SGBD)sistema gestor de base de datos.
Instalacion de un (SGBD)sistema gestor de base de datos.Instalacion de un (SGBD)sistema gestor de base de datos.
Instalacion de un (SGBD)sistema gestor de base de datos.
SergioLopez467
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
JUANR1022
 
Sistemas operativos threads
Sistemas operativos   threadsSistemas operativos   threads
Sistemas operativos threads
LiNo Candelario
 
Algoritmo del baquero
Algoritmo del baqueroAlgoritmo del baquero
Algoritmo del baquero
Kevin William Baylón Huerta
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
aics-1986-13-saraguro
 
Metodologia incremental
Metodologia incrementalMetodologia incremental
Metodologia incremental
Anel Sosa
 

La actualidad más candente (20)

Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
 
Documentación de sistemas
Documentación de sistemasDocumentación de sistemas
Documentación de sistemas
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
ARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdfARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdf
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Comparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y DistribuidaComparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y Distribuida
 
Sistema E S
Sistema E SSistema E S
Sistema E S
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
 
Instalacion de un (SGBD)sistema gestor de base de datos.
Instalacion de un (SGBD)sistema gestor de base de datos.Instalacion de un (SGBD)sistema gestor de base de datos.
Instalacion de un (SGBD)sistema gestor de base de datos.
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
 
Sistemas operativos threads
Sistemas operativos   threadsSistemas operativos   threads
Sistemas operativos threads
 
Algoritmo del baquero
Algoritmo del baqueroAlgoritmo del baquero
Algoritmo del baquero
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Metodologia incremental
Metodologia incrementalMetodologia incremental
Metodologia incremental
 

Destacado

JSP
JSPJSP
Cimentacion profunda
Cimentacion profundaCimentacion profunda
Cimentacion profunda
Xtian Svd
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
Boris Salleg
 
What is the ServiceStack?
What is the ServiceStack?What is the ServiceStack?
What is the ServiceStack?
Demis Bellot
 
LENGUAJE HTML
LENGUAJE HTMLLENGUAJE HTML
LENGUAJE HTML
gueste5e05b
 
Analisis de costos unitarios columnas, muros, encofrados y desencofrados
Analisis de costos unitarios columnas, muros, encofrados y desencofradosAnalisis de costos unitarios columnas, muros, encofrados y desencofrados
Analisis de costos unitarios columnas, muros, encofrados y desencofrados
Marco A. Quispe-Sucasaire
 
thy
thythy
thy
perrra
 
Inicio tardio
Inicio tardioInicio tardio
Inicio tardio
esrodriguez37
 
Brayan .p j nicolas
Brayan .p j nicolasBrayan .p j nicolas
Brayan .p j nicolas
Jhoan Palomino
 
Academia Libertad - Programa
Academia Libertad - ProgramaAcademia Libertad - Programa
Academia Libertad - Programa
CREO_Org
 
Uso de vacunas orales para un control eficaz de la peste porcina clásica
Uso de vacunas orales para un control eficaz de la peste porcina clásicaUso de vacunas orales para un control eficaz de la peste porcina clásica
Uso de vacunas orales para un control eficaz de la peste porcina clásica
Oficina Regional de la FAO para América Latina y el Caribe
 
Tecnologia y sociedad christian tacha
Tecnologia y sociedad christian tachaTecnologia y sociedad christian tacha
Tecnologia y sociedad christian tacha
Cristian Tacha
 
Maryi estructura
Maryi estructuraMaryi estructura
Maryi estructura
Esneider Sanchez
 
economia y desarrollo clase 3
economia y desarrollo clase 3economia y desarrollo clase 3
economia y desarrollo clase 3
wendy santivañez
 
Construcción residencial en Europa. Euroconstruct
Construcción residencial en Europa. EuroconstructConstrucción residencial en Europa. Euroconstruct
Construcción residencial en Europa. Euroconstruct
ITeC Instituto Tecnología Construcción
 
Trabajo proyecto de investigacion
Trabajo proyecto de investigacionTrabajo proyecto de investigacion
Trabajo proyecto de investigacion
Jhoan Palomino
 
Normativa pesca 2013
Normativa pesca 2013Normativa pesca 2013
Normativa pesca 2013
Rosa Olga Morales Palacios
 
Sistema endocrino
Sistema endocrinoSistema endocrino
Sistema endocrino
Mariaisa Apellidos
 
Puentes de Medición Electrónica - OA
Puentes de Medición Electrónica - OAPuentes de Medición Electrónica - OA
Puentes de Medición Electrónica - OA
John Martinez
 
Aparato respiratorio
Aparato respiratorioAparato respiratorio
Aparato respiratorio
TERE66
 

Destacado (20)

JSP
JSPJSP
JSP
 
Cimentacion profunda
Cimentacion profundaCimentacion profunda
Cimentacion profunda
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
What is the ServiceStack?
What is the ServiceStack?What is the ServiceStack?
What is the ServiceStack?
 
LENGUAJE HTML
LENGUAJE HTMLLENGUAJE HTML
LENGUAJE HTML
 
Analisis de costos unitarios columnas, muros, encofrados y desencofrados
Analisis de costos unitarios columnas, muros, encofrados y desencofradosAnalisis de costos unitarios columnas, muros, encofrados y desencofrados
Analisis de costos unitarios columnas, muros, encofrados y desencofrados
 
thy
thythy
thy
 
Inicio tardio
Inicio tardioInicio tardio
Inicio tardio
 
Brayan .p j nicolas
Brayan .p j nicolasBrayan .p j nicolas
Brayan .p j nicolas
 
Academia Libertad - Programa
Academia Libertad - ProgramaAcademia Libertad - Programa
Academia Libertad - Programa
 
Uso de vacunas orales para un control eficaz de la peste porcina clásica
Uso de vacunas orales para un control eficaz de la peste porcina clásicaUso de vacunas orales para un control eficaz de la peste porcina clásica
Uso de vacunas orales para un control eficaz de la peste porcina clásica
 
Tecnologia y sociedad christian tacha
Tecnologia y sociedad christian tachaTecnologia y sociedad christian tacha
Tecnologia y sociedad christian tacha
 
Maryi estructura
Maryi estructuraMaryi estructura
Maryi estructura
 
economia y desarrollo clase 3
economia y desarrollo clase 3economia y desarrollo clase 3
economia y desarrollo clase 3
 
Construcción residencial en Europa. Euroconstruct
Construcción residencial en Europa. EuroconstructConstrucción residencial en Europa. Euroconstruct
Construcción residencial en Europa. Euroconstruct
 
Trabajo proyecto de investigacion
Trabajo proyecto de investigacionTrabajo proyecto de investigacion
Trabajo proyecto de investigacion
 
Normativa pesca 2013
Normativa pesca 2013Normativa pesca 2013
Normativa pesca 2013
 
Sistema endocrino
Sistema endocrinoSistema endocrino
Sistema endocrino
 
Puentes de Medición Electrónica - OA
Puentes de Medición Electrónica - OAPuentes de Medición Electrónica - OA
Puentes de Medición Electrónica - OA
 
Aparato respiratorio
Aparato respiratorioAparato respiratorio
Aparato respiratorio
 

Similar a Uso de threads en C#

Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
La LuNa Amiga
 
Lps 17 hilos
Lps 17 hilosLps 17 hilos
Lps 17 hilos
Deploy El Salvador
 
Thread
ThreadThread
Thread
David Lilue
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
DaveParker23
 
Cuadro comparativo hilos
Cuadro comparativo hilosCuadro comparativo hilos
Cuadro comparativo hilos
Benjamín Joaquín Martínez
 
Hilo de ejecución
Hilo de ejecuciónHilo de ejecución
Subprocesamiento Mùltiple
Subprocesamiento MùltipleSubprocesamiento Mùltiple
Subprocesamiento Mùltiple
Videoconferencias UTPL
 
PPT CAP 2 Proceso e hilo.pdf
PPT CAP 2 Proceso e hilo.pdfPPT CAP 2 Proceso e hilo.pdf
PPT CAP 2 Proceso e hilo.pdf
AbigailMontero5
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
John Goyeneche
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
Ricardo Joel Robinson Gonzalez
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
JuanVaggom
 
855
855855
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
juan gonzalez
 
Clase 3 ene 8
Clase 3 ene 8Clase 3 ene 8
Clase 3 ene 8
Pepe Lascano
 
Atix23
Atix23Atix23
Atix23
atixlibre
 
Atix23
Atix23Atix23
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
Laboratorios ACME
 
Unidad2
Unidad2Unidad2
Unidad2
kerensoledad
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
Rene Guaman-Quinche
 
De Threads a CompletableFutures
De Threads a CompletableFuturesDe Threads a CompletableFutures
De Threads a CompletableFutures
Rafael Antonio Gutiérrez Turullols
 

Similar a Uso de threads en C# (20)

Uso de hilos
Uso de hilosUso de hilos
Uso de hilos
 
Lps 17 hilos
Lps 17 hilosLps 17 hilos
Lps 17 hilos
 
Thread
ThreadThread
Thread
 
DIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdfDIAPOSITIVAS UNIDAD3.pdf
DIAPOSITIVAS UNIDAD3.pdf
 
Cuadro comparativo hilos
Cuadro comparativo hilosCuadro comparativo hilos
Cuadro comparativo hilos
 
Hilo de ejecución
Hilo de ejecuciónHilo de ejecución
Hilo de ejecución
 
Subprocesamiento Mùltiple
Subprocesamiento MùltipleSubprocesamiento Mùltiple
Subprocesamiento Mùltiple
 
PPT CAP 2 Proceso e hilo.pdf
PPT CAP 2 Proceso e hilo.pdfPPT CAP 2 Proceso e hilo.pdf
PPT CAP 2 Proceso e hilo.pdf
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
 
855
855855
855
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
 
Clase 3 ene 8
Clase 3 ene 8Clase 3 ene 8
Clase 3 ene 8
 
Atix23
Atix23Atix23
Atix23
 
Atix23
Atix23Atix23
Atix23
 
Programación multihebra en java
Programación multihebra en javaProgramación multihebra en java
Programación multihebra en java
 
Unidad2
Unidad2Unidad2
Unidad2
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 
De Threads a CompletableFutures
De Threads a CompletableFuturesDe Threads a CompletableFutures
De Threads a CompletableFutures
 

Más de Ana Ivonne Val

Telecomunicaciones
Telecomunicaciones Telecomunicaciones
Telecomunicaciones
Ana Ivonne Val
 
Usabilidad
UsabilidadUsabilidad
Usabilidad
Ana Ivonne Val
 
Marcas de auditoria
Marcas de auditoriaMarcas de auditoria
Marcas de auditoria
Ana Ivonne Val
 
Lista de actividades del proyecto
Lista de actividades del proyectoLista de actividades del proyecto
Lista de actividades del proyecto
Ana Ivonne Val
 
Glosario de fibras
Glosario de fibrasGlosario de fibras
Glosario de fibras
Ana Ivonne Val
 
Motivacion e inteligencia emocional
Motivacion e inteligencia emocionalMotivacion e inteligencia emocional
Motivacion e inteligencia emocional
Ana Ivonne Val
 
Tecnicas de motivacion.
Tecnicas de motivacion.Tecnicas de motivacion.
Tecnicas de motivacion.
Ana Ivonne Val
 
Liderazgo transformador
Liderazgo transformadorLiderazgo transformador
Liderazgo transformador
Ana Ivonne Val
 
La ley de parkinson
La ley de parkinson La ley de parkinson
La ley de parkinson
Ana Ivonne Val
 
Gestion del tiempo
Gestion del tiempoGestion del tiempo
Gestion del tiempo
Ana Ivonne Val
 
Autoestima
AutoestimaAutoestima
Autoestima
Ana Ivonne Val
 
Administración del tiempo
Administración  del tiempoAdministración  del tiempo
Administración del tiempo
Ana Ivonne Val
 
Liderazo y manejo de grupos-ptt
Liderazo y manejo de grupos-pttLiderazo y manejo de grupos-ptt
Liderazo y manejo de grupos-ptt
Ana Ivonne Val
 
Liderazgo y manejo de grupos
Liderazgo y manejo de gruposLiderazgo y manejo de grupos
Liderazgo y manejo de grupos
Ana Ivonne Val
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
Ana Ivonne Val
 
Cierre del proyecto
Cierre del proyectoCierre del proyecto
Cierre del proyecto
Ana Ivonne Val
 
Cronograma
CronogramaCronograma
Cronograma
Ana Ivonne Val
 
Proceso de planeacion
Proceso de planeacionProceso de planeacion
Proceso de planeacion
Ana Ivonne Val
 
Sistema de cableado estructurado (scs)
Sistema de cableado estructurado (scs)Sistema de cableado estructurado (scs)
Sistema de cableado estructurado (scs)
Ana Ivonne Val
 
Sistema de cableado estructurado 1
Sistema de cableado estructurado 1Sistema de cableado estructurado 1
Sistema de cableado estructurado 1
Ana Ivonne Val
 

Más de Ana Ivonne Val (20)

Telecomunicaciones
Telecomunicaciones Telecomunicaciones
Telecomunicaciones
 
Usabilidad
UsabilidadUsabilidad
Usabilidad
 
Marcas de auditoria
Marcas de auditoriaMarcas de auditoria
Marcas de auditoria
 
Lista de actividades del proyecto
Lista de actividades del proyectoLista de actividades del proyecto
Lista de actividades del proyecto
 
Glosario de fibras
Glosario de fibrasGlosario de fibras
Glosario de fibras
 
Motivacion e inteligencia emocional
Motivacion e inteligencia emocionalMotivacion e inteligencia emocional
Motivacion e inteligencia emocional
 
Tecnicas de motivacion.
Tecnicas de motivacion.Tecnicas de motivacion.
Tecnicas de motivacion.
 
Liderazgo transformador
Liderazgo transformadorLiderazgo transformador
Liderazgo transformador
 
La ley de parkinson
La ley de parkinson La ley de parkinson
La ley de parkinson
 
Gestion del tiempo
Gestion del tiempoGestion del tiempo
Gestion del tiempo
 
Autoestima
AutoestimaAutoestima
Autoestima
 
Administración del tiempo
Administración  del tiempoAdministración  del tiempo
Administración del tiempo
 
Liderazo y manejo de grupos-ptt
Liderazo y manejo de grupos-pttLiderazo y manejo de grupos-ptt
Liderazo y manejo de grupos-ptt
 
Liderazgo y manejo de grupos
Liderazgo y manejo de gruposLiderazgo y manejo de grupos
Liderazgo y manejo de grupos
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
 
Cierre del proyecto
Cierre del proyectoCierre del proyecto
Cierre del proyecto
 
Cronograma
CronogramaCronograma
Cronograma
 
Proceso de planeacion
Proceso de planeacionProceso de planeacion
Proceso de planeacion
 
Sistema de cableado estructurado (scs)
Sistema de cableado estructurado (scs)Sistema de cableado estructurado (scs)
Sistema de cableado estructurado (scs)
 
Sistema de cableado estructurado 1
Sistema de cableado estructurado 1Sistema de cableado estructurado 1
Sistema de cableado estructurado 1
 

Último

TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 

Último (20)

TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 

Uso de threads en C#

  • 1.
  • 2. Integrantes Luis FelipeZacaríasGuzmán Alejandro JavierRomero Rosas Karen Zamora Hernández Ana IvonneToral Morales JoséGuillermo PájaroCoatl DanielAlonso Calvario Bruno Salgado Mejía
  • 3. Funcionamiento de hilos • Todos los hilos se les asigna un tiempo de ejecución apropiado y que todos aquellos hilos que estén bloqueados o pausados no consuman tiempo de CPU. • En un ordenador con un solo procesador, un programador de hilos gestiona una alternancia rápida entre los hilos activos, derivando en un comportamiento entrecortado • La asignación de tiempo para cada hilo está en el orden de las decenas de milisegundos.
  • 4. Hilos y procesos • Todos los hilos dentro de una aplicación están dentro de un proceso. • La diferencia principal es que los procesos están completamente aislados unos de otros • los hilos comparten memoria con otros hilos que pertenecen al mismo proceso • Un hilo puede estar generando datos en un segundo plano mientras que otro hilo muestra los datos que van llegando.
  • 5. Procesos y subprocesos • Para que un proceso sea capaz de hacer • algo, el proceso debe ser propietario de un hilo (thread). • Este thread es el responsable de ejecutar el código contenido en el espacio de direcciones del proceso. • un proceso puede contener varios threads y todos ellos ejecutando código “simultáneamente "en el espacio de direcciones del proceso
  • 6. • cada thread tiene su propia colección de registros de la CPU y su propio stack (pila de almacenamiento) • threads se ejecutan concurrentemente al asignar ‘rodajas de tiempo’ (time slices) llamadas quantums a cada thread alternativamente (y consecutivamente). • cada quantum es de 15 milissegundos.
  • 7. Administración de procesos • Process es un componente que nos permite • Iniciar • detener • controlar • supervisar aplicaciones.
  • 8. Administración de hebras y hilos • El ámbito System.Threading proporciona en la plataforma .NET las clases e interfaces para escribir código multihebra. • Cada hebra con un proceso • Si el proceso crea más hebras, será multihebra(multithreading)
  • 9. Por que son útiles las hebras • En primer lugar, cuando hay una tarea de fondo. Imagine que quiere poner un logotipo que gire en la parte superior izquierda del formulario. • En segundo lugar, cuando esta realizando más de una tarea a la vez Podría dividir la imagen en cuatro partes y ejecutar las cuatro copias en la rutina de procesado de imagen
  • 10. La clase Thread PROPIEDADES • CurrentPrincipal • CurrentThread • IsAlive • IsBackground • Name • Priority • ThreadState
  • 11. METODOS • Abort • Interrupt • Join • Resume • Sleep • Start • Suspend
  • 12. Control de las hebras • Llame a su método Start() para comenzar la ejecución • Terminar una hebra puede llamar al método Abort(). • Los métodos Suspend() y Resume() se pueden utilizar para parar temporalmente la ejecución de una hebra y a continuación reiniciarla de nuevo • Sleep() se utiliza para poner una hebra a dormir durante un periodo de tiempo, normalmente especificado como un número de milisegundos.
  • 13. Estados y prioridad de las hebras La enumeración ThreadState, describe los posibles estados que puede tener una hebra: Elementos • Aborted • AbortRequested • Background • Running • Stopped • StopRequested • Suspended • SuspendRequested • Unstarted • WaitSleepJoin
  • 14. • Un elemento de la enumeración ThreadPriority, cuyos valores son: Elemento • Hightest • AboveNormal • Normal. • BelowNormal • Lowest
  • 15. Sincronización de hebras • compartidos y por la temporización. • cada función de la hebra tiene su propio conjunto de variables locales, puesto que las variables locales se declaran en la pila • variables locales no pueden interferir con otras, porque se • crean en diferentes pilas.
  • 16. Las clases sin sincronización • La clase Interlocked contiene cuatro métodos de hebra segura compartidos para realizar operaciones con variables • estos métodos son atómicos, por lo que no se pueden • interrumpir por cambios de contexto de hebras: • Increment: Incrementa una variable. • · Decrement: Disminuye una variable. • · Exchange: Pone una variable a un valor y devuelve el valor original. • · CompareExchange: Compara dos valores y reemplaza el valor destino si son iguales
  • 17. ¿Qué es multithreading? • El multithreading es manejado internamente por un programador de threads, una función que el CLR típicamente delega el sistema operativo. • Un programador de threads se asegura que todos los threads activos se encuentren apropiadamente dispuestos en tiempo de ejecución, y que los threads que se encuentran bloqueados - por ejemplo por un bloqueo exclusivo, o esperando una entrada del usuario - no consuman recursos de tiempo del CPU.
  • 18. Threads vs. Procesos • Todos los threads de una aplicación se encuentran contenidos en proceso – la unidad del sistema operativo en la cual una aplicación corre. • Los threads tiene ciertas similitudes con los procesos – por ejemplo los procesos corren bajo time-sliced con otros procesos en la computadora de un modo similar a los threads en una aplicación C#.
  • 19. • La principal diferencia es que los procesos se encuentran totalmente aislados de otros procesos, mientras que los threads comparten el montículo de memoria (heap) con otros threads de la misma aplicación. • Esto hace que los threads sean muy útiles: un thread puede recuperar datos en segundo plano, mientras que otro thread va mostrando los datos mientras llegan.
  • 20. ¿Cuándo utilizar Threads? • Una aplicación común para el multithreading es la ejecución en segundo plano de tareas que consumen mucho tiempo. El thread principal se mantiene corriendo mientras que el thread que realiza la operación funciona en segundo plano. • En aplicaciones Windows Forms, si el thread principal realiza operaciones largas, los mensajes del teclado y el mouse no pueden ser procesados, como resultado la aplicación deja de responder.
  • 21. • Por esta razón es bueno hacer que las tareas que insumen mucho tiempo funcionen en threads de trabajo y en todo caso el thread principal puede mostrar el diálogo modal “Procesando… espere por favor” en caso que el programa no pueda continuar hasta que la tarea termine. • Esto asegura que la aplicación no sea tomada por el sistema operativo como "No responde" incitando al usuario a forzar la finalización del proceso! • El diálogo modal permite implementar un botón "Cancelar" ya que el diálogo continúa recibiendo eventos mientras que la tarea es realizada por el hilo trabajador.
  • 22. • En el caso de las aplicaciones in interfaz gráfica, como los servicios de Windows, el multithreading toma particular importancia cuando una tarea es potencialmente consumidora de tiempo porque se encuentra a la espera de la respuesta de otra computadora (como un servidor de aplicaciones, un servidor de base de datos, o un cliente). • Tener un thread trabajador realizando dicha tarea significa que el thread que lo instancia se encontrará inmediatamente libre para hacer otras cosas.
  • 23. • Otra aplicación del multithreading es utilizarlo en métodos que realizan cálculos intensivos. Tales métodos pueden ejecutarse más rápido en computadoras con múltiples procesadores si la carga de trabajo es dividida en múltiples threads. • La cantidad de procesadores puede obtenerse por medio de la propiedad Environment.ProcessorCount.
  • 24. • Una aplicación C# puede convertirse en multi thread de dos maneras: • Creando explícitamente threads adicionales, o utilizando características del framework .NET que implícitamente crean threads – como BackgroundWorker, thread pooling, un threading timer, un Remoting server, o un Web Services o una aplicación ASP.NET. • En estos últimos casos no se tiene control del multithreading.
  • 25. ¿Cuándo no utilizar Threads? • El multithreading posee desventajas. La más grande es que implica mayor complejidad en los programas. La creación de una aplicación multiples threads no es compleja, la complejidad se encuentra en la interacción entre los threads. • Esto es así cuando la interacción es válida o no, y puede derivar en largos procesos de desarrollo y la consecuente susceptibilidad de intermitentes y difícilmente reproducibles bugs.
  • 26. • Por esta razón es recomendable mantener el diseño de la interacción entre los múltiples threads simple – o no utilizar multithreadingl – a menos que tangas una peculiar inclinación por re-ecribir y debuggear!
  • 27. • El multithreading también implica consumo de recursos y costo de CPU en crear y cambiar entre threads si es utilzado en exceso. • En particular, cuando implica pesados procesos de lectura/escritura a disco, puede ser más rápido tener uno o dos threads trabajadores realizando las tareas en secuencia en lugar de tener múltiples threads trabajando en simultáneo.
  • 28. Creando e iniciando Threads • Los threads utilizando el constructor de la clase Thread, pasándole un delegado del tipo ThreadStart– indicando el método desde donde debe iniciar la ejecución. Aquí vemos la definición del delegado ThreadStart: • public delegate void ThreadStart(); • Llamando al método Start logramos que la ejecución comience. El thread continúa hasta que su método retorne, en este punto el thread finaliza.
  • 29. • Aquí vemos un ejemplo utilizando la sintaxis larga de C# para crear el delegado TheadStart: • class ThreadTest { static void Main() { Thread t = new Thread (new ThreadStart (Go)); t.Start(); new thread.Go(); // Corre simultaneamente Go() en el thread principal. } static void Go() { Console.WriteLine ("hello!"); }
  • 30. • Se puede crear un thread de un modo más conveniente utilizando la sintaxis corta de C# para instanciar delegados: • static void Main() { Thread t = new Thread (Go); // No es necesario utilizar explícitamente ThreadStart t.Start(); ... } static void Go() { ... }
  • 31. • En este caso el delegado ThreadStart es inferido por el compilador. Otro método es utilizar un método anónimo para iniciar un thread: • static void Main() { Thread t = new Thread (delegate() { Console.WriteLine ("Hello!"); } ); t.Start(); } • Un thread tiene su propiedad IsAlive en valor true después de llamar a su método Start(), hasta que el thread finaliza. Una vez finalizado un thread no puede ser re-iniciado.
  • 32. Pasando datos a ThreadStart • En ejemplo de arriba queremos distinguir mejor la salida de cada thread, por ejemplo haciendo que uno de ellos imprima en mayúscula. • Podemos lograr esto pasando un flag al método Go: pero no podemos usar el delegado ThreadStart porque no acepta argumentos. Afortunadamente en framework .NET define otra versión del delegado llamada ParameterizedThreadStart, la cual acepta un objeto como parámetro del siguiente modo:
  • 33. • public delegate void ParameterizedThreadStart (object obj); • Entonces el ejemplo previo se ve así: • class ThreadTest { static void Main() { Thread t = new Thread (Go); t.Start (true); Go (true) Go (false); } static void Go (object upperCase) { bool upper = (bool) upperCase; Console.WriteLine (upper ? "HELLO!" : "hello!"); } } • hello! HELLO!
  • 34. • En este ejemplo el compilador infiere automáticamente el delegado ParameterizedThreadStart porque el método Go acepta un objeto como argumento. • Podríamos haberlo escrito: Thread t = new Thread (new ParameterizedThreadStart (Go)); t.Start (true);
  • 35. Nombrando Threads • Se puede asignar nombre a un thread a través de su propiedad Name. Esto es de gran beneficio en la depuración: y también permite hacer Console.WriteLine nombre del thread, Microsoft Visual Studio recoge el nombre del thread y lo muestra en la barra de herramientas Debug Location. • Podemos nombrar un thread en cualquier momento, pero sólo una vez, en caso de intentar cambiar el nombre de un thread obtendremos como resultado una excepción.
  • 36. • También podemos asignarle nombre al thread principal de la aplicación, en el siguiente ejemplo hacemos esto a través de la propiedad estática CurrentThread: class ThreadNaming { static void Main() { Thread.CurrentThread.Name = "main"; Thread worker = new Thread (Go); worker.Name = "worker"; worker.Start(); Go(); } static void Go() { Console.WriteLine ("Hello from " + Thread.CurrentThread.Name); } } • Hello from main Hello from worker
  • 37. Threads en primer y segundo plano • Por defecto los threads corren en primer plano, esto quiere decir que la aplicación siguirá corriendo mientras que alguno de sus threas se encuentre activo. • C# soporta threads en segundo plano (background threads) los cuales no mantiene la aplicación corriendo por si mismo, sino que terminan inmediatamente cuando la aplicación finaliza.
  • 38. • Cambiar un thread de primer a segundo plano no cambiar su estado o prioridad en la planificación del CPU de ninguna manera. La propiedad IsBackground del thread controla el modo de ejecución como en el siguiente ejemplo:
  • 39. • class PriorityTest { static void Main (string[] args) { Thread worker = new Thread (delegate() { Console.ReadLine(); }); if (args.Length > 0) worker.IsBackground = true; worker.Start(); } }
  • 40. • Si llamamos al programa sin pasarle argumentos el thread de trabajo corre en su modo por defecto de primer plano y esperará en la instrucción ReadLine hasta que el usuario presione Enter. Mientras tanto el thread principal deja de existir pero la aplicación sigue corriendo porque existe un thread en primer plano todabía vivo. • Por otro lado, si un argumento es pasado al thread principal (Main()) el thread de trabajo es ejecutado en segundo plano y el programa deja de existir cuando el thread principal termina, finalizando la instrucción ReadLine.
  • 41. • Cuando un hilo en segundo plano termina de este modo, todos los bloques finally son ignorados. Ya que no es deseable ignorar los bloques finally es una buena práctica esperar a que todos los threads de trabajo terminen antes de finalizar la aplicación – posiblemente con un timeout (esto puede lograrse utilizando Thread.Join). Si por alguna razón un thread renegado nunca termina, podemos intentar abortarlo, y si esto falla, abandonar el thread permitiendo que muera con el proceso.
  • 42. • Tener threads en segundo plano puede ser beneficioso, por la razón que es posible que el último diga cuando la aplicación debe terminar. Consideremos la alternativa - un thread en primer plano que no muere - evitando que la aplicación termine. Un thread en primer plano olvidado es particularmente dañino en aplicaciones Windows Form, porque la aplicación aparentará terminar (el menos para el usuario) pero el proceso continuará corriendo.
  • 43. Preguntas… • ¿Qué es un proceso y subproceso? • ¿Qué es un thread? • ¿Cuál es la diferencia entre estos dos? • ¿Qué librería se utiliza para poder usar threads? • ¿Cuáles son algunas de las propiedades de la clase thread? • ¿Cuándo utilizamos los threads? • ¿Cuándo no es necesario utilizar threads? • ¿Qué es multithreading? • ¿Cuáles son algunos estados y prioridades de los threads? • Cuando creamos un thread ¿Qué tiempo es asignado para cada hilo?
  • 44. Gracias por su atención !!!