Está en la página 1de 18

2019

APLICACIONES DISTRIBUIDAS

01/04/2019

DEBERES

Debe tener bibliografía, conclusiones y recomendaciones.

CLASES.

Las clases contienen una importante parte práctica.

- El código debe incluir comentarios adecuados


- Deben incluir los cambios o mejoras solicitados en la clase
- No incluir las carpetas obj y bin.
- En varias clases se realizan prácticas, de estas el resultado (deber) debe incluir lo
mencionado.

La fecha para definir con quien van a trabajar es el próximo lunes.

PARTICIPACIÓN EN CLASE.

- Prepararse, leer el capítulo del libro o busca en internet sobre lo que se trata la clase, el
silabo está a su disposición.
- La nota: participación en clase, participación en los foros (Al menos cinco veces).
- Responder a la encuesta de participación en clase.

Proyectos

- Dos proyectos
o Hay un mes de tiempo para acabar.
- Entregables.
o Loogbook. (registrar las actividades que se realizó en el proyecto); la calificación
dependerá de lo bien documentado de las actividades realizadas.
o Informe (contiene máximo dos hojas, es un resumen del proyecto):
 Cuál es el desafió más grande qué afrontaron en realizar el proyecto y
como lo manejaron.
 Que nota merecen y por qué.
 Evaluar la experiencia de aprendizaje.
o Código.
- Se trabajara en dos áreas.
o Aplicaciones con sockets. (mini Saew)
o Aplicaciones con Web Services.
PRUEBAS ACUMULATIVAS

Constan de dos partes.

 Parte teórica.
 Parte práctica. (resolver un problema.)
 Son acumulativas.

Políticas

deber##_NombreA_NombreB

Ingreso puntual (hay como entrar y salir cuando sea.)


Entrega tardía:
 Limite suave: 50% menos si se entrega hasta el día 9.

Entregables

 En la parte superior izquierda de la primera hoja deben especificar. (lo mismo de siempre.)
 En el código.
o Deber##
o Tu nombre va aquí
o Fecha de realización: xx/xx/xxx
o Fecha de entrega: xx/xx/xxxx
o Resultados:

Bibliografía.

 Colouris, G., Dollimore, J., “Distributed System: Concepts and Design”

Primer Deber.

 Lo de la carpeta de cartón.

Parte Dos.

 Ese deber de las mil palabras.

Ultimo Deber.

 El mismo de mil palabras.

HORARIO DE ATENCIÓN VIERNES DE 11 A 13.


04/04/2019

¿Porque distribuir?
¿Separación funcional?
 Capacidades de los PC
o Clientes vs servidores
o Recolección de datos vs procesamiento de datos
 Distribución inherente
o Información, personas, sistemas de inventarios
 Distribución y balanceo de carga
o Rendimiento
 Compartir recursos:
o Capacidad de procesamiento insuperable
 Robustez (si se cae una parte los otros equipos van a seguir funcionando.)
 Economía

Definición

 De acuerdo a george colouris:


o “Sistema en el cual los componentes de hardware o software están localizados en
computadores en red, el cual se comunica y coordina sus acciones sólo con el paso
de mensajes”
 De acuerdo a L. Lamport:
o “sabes que estas usando un sistema distribuido cuando un problema en un
computador del que nunca habías oído evita qué puedas hacer tu trabajo”
 De acuerdo a M. Singhal y N. Shivarantri.
o “Colección de PCs que no comparten una memoria común o un reloj físico, que se
comunican por paso de mensajes mediante una red, y donde cada PC tiene su
propia memoria y corre su propio sistema operativo. Los PCs típicamente son
semiautónomos y están ligeramente acoplados cuando cooperan para resolver un
problema de forma colectiva”
 De acuerdo a A. Tanenbaum:
o “Colección de PCs independientes que ante los ojos de los usuarios parecen ser un
solo sistema coherente”
 De acuerdo a A. Goscinski:
o “Término que describe un amplio rango de PCs, desde sistemas débilmente
acoplados como en redes WAN hasta sistemas fuertemente acoplados como en
redes LAN e incluso sistemas muy fuertemente acoplados como sistemas
multiprocesador”

Consecuencias de distribuir

 Sistemas Distribuidos = Sistemas Concurrentes


o Componentes autónomos.
 Los componentes pueden ejecutar tareas concurrentes.
o Problemas típicos:
 Bloqueos
 Comunicaciones no confiables. (* tcp es confiable cuando no hay errores,
luego de 255 intentos termina la conexión.)
 Sincronización y coordinación:
o Paso de mensajes
o Recursos compartidos
 Ausencia de un reloj global:
o Cooperación = coordinación mediante paso de mensajes.
o Límites en la precisión con la que los procesos pueden sincronizar sus relojes.
o No existe una noción global del tiempo.
 Ausencia de un estado global:
o No hay conocimiento del estado global debido a la concurrencia y al paso de
mensajes.
 Fallos independientes:
o Cualquier componente del sistema puede fallar.
o Fallos de red:
 Los PCs pueden quedar aislados del Internet.
 Los PCs no dejan de funcionar.
o Fallos de PCs
 Cualquier fallo puede provocar que el sistema deje de funcionar.
o Pero no implica que el resto de componentes dejan de hacerlo.
 Sistema compuesto por múltiples computadoras interconectadas por una red:
o Fallos independientes.
o Comunicación no confiable.
o Demoras variables.
o Velocidad y ancho de banda moderado.
o Inversiones (generalmente) menores que en mainframes.
o Costos de administración superiores. (Mas gente para administrar)
o Orden parcial de eventos.
o Dificultad para evaluar el estado global del sistema.

Dibujito.

Conjunto de equipos, cada uno con su hardware y S.O, el objetivo es que puedan pasar mensajes
entre ellos para coordinar.

Middleware, independientemente del S.O. que tengamos las distintas maquinas puedan
comunicarse entre sí.

Objetivos de un sistema distribuido.

 Acceso a recursos compartidos:


o Acceso eficiente, transparente y controlado.
 Oculta la distribución:
o El sistema se “ve” como un único equipo.
 Sistema abierto:
o Ofrece servicios de acuerdo a estándares.
 Escalable:
o Tanto en tamaño como en límites geográficos y administrativos.

Accesibilidad.

 Conectar recursos y usuarios:


o Permitir acceso fácil a los recursos.
o Permitir compartir recursos.
o Colaboración e intercambio de información entre usuarios.
 Recursos remotos
 Recursos compartidos

Dificultades al desarrollar sistemas distribuidos

 Suposiciones falsas:
o Red confiable
o Red segura
o Red homogénea
o Topología estática
o Latencia nula
o Ancho de banda infinito
o Único administrador

Ejemplos.

 Internet
o Red heterogénea dePCs.
o Aplicaciones se comunican usando mensajes.
o Servicios abiertos
 Sistemas Multimedia Distribuidos.
o Emplean infraestructura de Internet.
o Tienen fuentes y sumideros de datos que requieren sincronización en tiempo real.
o Multicast
o Ejemplos:
 Video conferencias
 Audio y video por demanda
 Herramientas de enseñanza a distancia
- Intranets:
o Porción del Internet
o Aislada del Internet.
o Administrada localmente.
o Usualmente propietaria.
o Ofrece varios servicios:
 Compartición de archivos.
 Firewalls para protección de red.

- Computación Móvil
o Realización de tareas
o Mientras el usuario “está en movimiento”.
 Portabilidad y habilidad de conectarse a redes en diferentes lugares ha
hecho posible “mobile (normadic) computing”.
o Varios tipos de dispositivos:
o Laptops, PDAs, teléfonos móviles, etc.
o Dispositivos embebidos en otros aparatos como refrigeradoras o microondas.

 Sistemas de computación Ubiquitous (Ubicomp)


o Pequeños dispositivos que están presentes en los ambientes físicos de los
usuarios.
o “Calmtechnology”: Tecnología resida en el background de la vida de los humanos.
o MarkWeiser:
 Ubicomp tiene como objetivo mejorar el uso de PCs haciendo que estén
disponibles en el ambiente físico pero haciéndolas efectivamente
invisibles al usuario.
 Visión: un mundo lleno de dispositivos totalmente conectados, conredes
inalámbricas en todo lado. No será necesario cargar nada,pues la
información será accesible en TODO lado.
o “Things that think”.

Sistemas embebidos:

 Sistemas de control en aviones (avionics).


 Sistemas de control en autos.
o Más de 200 procesadores autónomos interconectados por tecnologías LAN
propietarias de tipo bus.
 Dispositivos electrónicos

Massively Multiplayer Online Games (MMOG):

Experiencia inmersiva en un mundo persistente virtual a través del Internet.

- EverQuest
- World of Warcraft
- FinalFantasy

World of Warcraft tiene alrededor de 12’000.000de usuarios.

- Sistema económico
- Social
Tipos de sistemas distribuidos

 Sistemas de Computación Distribuida:


o Cluster
o Grid
o Cloud Computing
 Sistemas de Información Distribuida:
o Procesamiento de transacciones
o Integración de aplicaciones
 Sistemas Distribuidos Ubicuos:
o Sistemas del hogar
o Sistemas electrónicos para el cuidado de la salud
o Redes de sensores

Computación de Alto Rendimiento (HPC)

Supercomputadores y clusters de PCs para resolver problemas computacionales avanzados.

 Opera en el orden de los Tera-FLOPS y Peta-FLOPS.


 Usados en investigación científica.
 Procesamiento paralelo.
 Flops =FLoatingpointOPerationper Second–Medida delrendimiento de un PC.
 TOP 500 HPL list
o Summit – oak Ridge
o Red = propietaria (infiniband non blocking fat tree)

Retos: Heterogeneidad

Se aplica a:

 Redes
 Hardware
 Sistemas operativos
 Lenguajes de programación
 Diferentes lenguajes de programación
 Diferentes lenguajes de programación
o cada lenguaje tiene sus propias particularidades
 Programas escritos por diferentes programadores
o No pueden interactuar a menos que sigan estándares comunes.
 Middleware:
o Capa de software que provee una abstracción de programación
o Puede enmascarar la heterogeneidad de la red.
o Se implementa sobre los protocolos de internet.

05/04/2019

Código Móvil:
 Puede enviarse desde un PC y ejecutarse en el destino.
o Applets de JAVA
o Controles ActiveX
 El set de instrucciones de un PC depende del hardware, por lo que el código máquina para
un tipo de PC no se ejecutará en otro tipo.
o Solución: máquina virtual
 JVM
 .NET Framework

Retos: Sistemas Abiertos

Sistema Cerrado:

 No se puede modificar el código.


 No se puede agregar estructuras para datos compartidos.

Sistema Abierto:

 Visión de servicio.
 Estándares compartidos.
 Interfaces de mensajes bien definidas.
 Interoperabilidad y portabilidad.
 Publicados.

Retos: Seguridad

Tres componentes:

 Confidencialidad
o Protección de individuos no autorizados
 Integridad
o Protección contra alteración o corrupción
 Disponibilidad
o Protección contra interferencias con respecto al acceso de los recursos

Restos: Escalabilidad

Sistema Escalable

 Mantiene su efectividad al incrementar significativamente el número de usuarios y de


recursos.

Posibles retos:

 Control del costo de recursos físicos


 Control de la pérdida de rendimiento
 Prevención de agotamiento de recursos
 Evitar cuellos de botella de rendimiento

Control del costo de recursos físicos:


 Incremento en la demanda debe permitir extender el sistema (costo razonable).
o Incremento de acceso a archivos en la red si se incrementan el número de
usuarios y PCs.
o Agregar nuevos servidores para reducir cuellos de botella.
 Sistema escalable para n usuarios, requiere como máximo O(n), rendimiento de tipo lineal
recursos físicos.
o 1 servidor de archivos da soporte a 20 usuarios.
o 2 servidores darían soporte a 40 usuarios.
 Control de pérdida de rendimiento:
o Tamaño de los de datos es proporcional al número de usuarios o recursos en el
sistema.
o Algoritmos con estructuras jerárquicas escalan de mejor forma que aquellos con
estructuras lineales.
o Tiempo de acceso a datos con estructura jerárquica es O(log n), siendo n tamaño
del conjunto de datos.
o La perdida en rendimiento no debe ser mayor a este tiempo para un sistema
escalable.
 Prevención de agotamiento de recursos:
o Falta de escalabilidad demostrado por IPv4.
o Es difícil prever la demanda futura.
o Sobrecompensación puede ser peor que adaptarse al cambio cuando sea
necesario.
 Direcciones de tamaño mayor requieren espacio adicional en los mensajes
y espacio extra para almacenamiento.
 Evitar cuellos de botella en rendimiento:
o Algoritmos descentralizados para evitar cuellos de botella.
o Sistema previo al DNS: archivo de texto plano.
 Debían descargarlo para actualizarlo.
 Funcionó bien cuando en Internet había pocos PCs.
 Se convirtió en un serio problema de rendimiento al crecer el Internet.
 Solución: descentralizar el archivo.
 Particionado y distribuido en Internet en servidores DNS.

Técnicas de escalamiento

Sirven para tratar de resolver los problemas de rendimiento

Capacidad limitada

Tres técnicas:

 Ocultar latencia
 Distribuir
 Replicar Caché

Dibujito: minimizar la latencia, distribuir y replicar y cache.


Retos: Manejo de fallos.

 Fallos en hardware o software.


 Fallos parciales.
o Un componente falla, el resto sigue trabajando.
 Técnicas:
o Detección de fallos
o Enmascaramiento de fallos
o Tolerancia a fallos
o Recuperación de fallos
o Redundancia
 Disponibilidad: Medida de la proporción de tiempo que el sistema está disponible.

Retos: Transparencia.

 Ocultamiento de la separación de los componentes en un sistema distribuido.


 No siempre se puede lograr una distribución totalmente transparente.
o Ubicación de los usuarios.
o Distribución aparente o no se quiere ocultar.
o Ocultar fallos de red o nodos es teóricamente y prácticamente imposible.
o Transparencia total afecta el rendimiento.
 Diferentes grados de transparencia definidos en ANSA 1989

TRANSPARENCIA Y DESCRIPCION.

Acceso: Permitir el acceso a recursos locales y remotos usando operaciones idénticas.

Ubicación: Permitir el acceso a recursos sin conocimiento de su ubicación.

Concurrencia: Permitir que varios procesos operen de forma concurrente usando recursos
compartidos sin interferir entre ellos.

Replicación: Disponer de múltiples instancias de recursos para incrementar confiabilidad y


rendimiento, sin que usuarios o programadores tengan conocimiento de las réplicas.

Fallos: Permitir que usuarios y clientes puedan concluir sus tareas sin importar las fallas de
componentes.

Movilidad: Permitir el movimiento de recursos y clientes dentro del sistema sin afectar la
operación de usuarios o programas.

Rendimiento: Permitir que el sistema sea reconfigurado para mejorar el rendimiento cuando la
carga varía.

Escalamiento: Permitir que el sistema y las aplicaciones escalen sin cambiar la estructura del
sistema o los algoritmos de la aplicación.
Retos: Calidad de Servicio.

 Propiedades del sistema que afecta la calidad del servicio:


o Confiabilidad
o Seguridad
o Rendimiento
o Adaptabilidad
 Los recursos críticos:
o deben ser reservados por las aplicaciones con QoS.
o debe haber gestores de recursos que provean garantías.

Recursos Compartidos

 Componente de PC que se puede acceder de forma remota, de forma transparente.


 Caracteriza el rango de elementos que pueden compartirse mediante una red.
o Componentes de hardware
o Entidades definidas por software

Algoritmos Distribuidos

 Algoritmos diseñados para ejecutarse en múltiples procesadores.


 Empleados en muchos sistemas prácticos:
o Elección de líder
o Consenso
o Exclusión Mutua
o Spanning Tree

Balanceo de Carga

Objetivos:

Mejorar elthroughput. Reducir la latencia percibida por el usuario. Necesario debido a: Alto
tráfico de red Tasa alta de pedidos Alta carga computacional Cola de un banco: cómo podría
reducirse eltiempo de espera para ser atendido?

 Formas de balanceo de carga:


o Migración de datos–Capacidad de mover datos(replicados) en el sistema basado
en patrones de acceso de los usuarios.
o Migración computacional–Capacidad de reubicar procesos en orden de
redistribuir la carga de trabajo.
o Planificación distribuida–Uso de poder computacional desocupado.

Control de Concurrencia

 Recursos compartidos.
o Varios clientes intentan acceder a recursos compartidos al mismo tiempo.
 Opciones:
o Un proceso toma una orden a la ver.▪Limita elthroughput. Procesamiento
concurrente.▪Posibles inconsistencias.
Ejemplo: Sistema de Apuestas.

 Casi al terminar la apuesta: accesos a estructura de datos muy frecuentes.


 Estructura de datos = objeto.
o Varios hilos tienen acceso al objeto.
o Suponer que se tienen dos usuarios que realizan apuestas casi al mismo tiempo:
 Juan: $120
 Diana: $100
o Se almacena en su lugar:
 Juan: $100
 Diana: $120

Bloqueo

 Bloque Exclusivo:
o Bloquear acceso a un objeto.
o Si se quiere acceder al recurso bloqueado, la solicitud se suspende y se debe
esperar a que el objeto este desbloqueado.
o Idea similar a la de un cajero, mientras el cajero atiende una solicitud está
bloqueado, no atiende a otro usuario.

Deadlock

Los bloqueos pueden provocar una muerte por bloqueos: Estado en el cual cada miembro de un
grupo espera por otro miembro para liberar un bloqueo.

 Soluciones:
o Timeouts:
o Cada bloqueo tiene un periodo de tiempo en el cual es invulnerable, luego de lo
cual es vulnerable.
o Prevención:
 Bloquear todos los recursos cuando un miembro necesita un recurso.
o Detección:
 Detectar el deadlock, y seleccionar la cancelación de operación de
miembros para romper el ciclo.

2019/04/08

Sistemas distribuidos

Temas a revisar:Hilos y ProcesosControl de concurrencia

Hilos y Procesos

 Al iniciar una aplicación, el SO crea un proceso.


 Proceso: conjunto de recursos que conforman un programa en ejecución.
 Totalmente aislado de otros procesos.
 Cada proceso dispone de un hilo de ejecución.
 Los hilos pueden compartir memoria con otros hilos en la misma aplicación.
 Se emplea múltiples hilos para separar tareas:
 Hilo trabajador–encargado de realizar una tarea que consume recursos.
 Hilo principal–se encarga de mantener el interfaz de usuario
 Un proceso tiene un único hilo.
 El hilo se ejecuta desde el inicio hasta el fin del programa.
 Un hilo puede producir otros hilos.
 En cualquier instante, un proceso puede tener varios hilos en varios estados.
 Cuando existen varios hilos en un proceso, todos ellos comparten los recursos del proceso.
 El sistema planifica la ejecución de los hilos en el procesador.
o No emplea los procesos.
 Hilo de ejecución (thread).
o Unidad más pequeña de procesamiento.
o El SO programa su ejecución.
 Varios hilos pueden existir en un mismo proceso
o Comparten los recursos del proceso: memoria, código, contexto.
o En un único procesador, cada hilo tiene un turno (multiplexación basada en
tiempo).
o En un multiprocesador, cada hilo se ejecuta al mismo tiempo, con cada
procesador/núcleo ejecutado un hilo en particular.
 C# permite trabajar con múltiples hilos.
o Hay varias sobrecargas que se generan:
 al crear y destruir hilos,
 al programar su ejecución,
 Al cargarlos.
o Complejidad al usarlos
 para evitar que realicen tareas que no les corresponde.
 Espacio de nombres: System.Threading
o Conjunto de elementos para construir aplicaciones con múltiples hilos.

Clase Descripción
Interlocked Ofrece operaciones atómicas para tipos
compartidos por múltiples hilos
Monitor Provee sincronización usando bloqueos y
señales de espera.
Mutex Permite sincronización entre límites de
AppDomain.
Semaphore Permite limitar el número de hilos que pueden
acceder aun recurso.
Thread Permite crear hilos adicionales en el
AppDomainoriginal.
Timer Provee un mecanismo para ejecutar un
método a intervalos de tiempo.

Clase Thread
Ofrece funcionalidad para trabajar con hilos.

Permite suspender, detener y destruir hilos.

Falta cuadro

Falta otro cuadro

Dibujito de hilos

Compartir Datos

Para compartir datos se puede usar: Referencias a objetos. Campos estáticos.▪Pueden provocar
funcionamiento inesperado si no setratan con cuidado.

Los hilos son programados por el SO.

 Programador (planificador) de hilos.

Se encarga de asignar tiempo a cada hilo en el procesador.

 Asegura que los hilos que están esperando o bloqueados no consuman tiempo de
procesador.

Tiempo en el procesador = quantum.

 Región de 10 ms

Usos

Ofrecer un interfaz que responde al usuario.

 Un hilo realiza tareas que consumen tiempo.

Uso eficiente de un posible CPU bloqueado.

 Mientras se espera por una determinada respuesta.

Programación paralela.

 Estrategia tipo “dividir y conquistar”.

Permitir responder a solicitudes de forma simultánea.

 Aplicaciones distribuidas.

Creación de hilos
Los hilos se crean mediante el constructor de la clase Thread.

 El constructor acepta como argumento un delegado ThreadStart, el cual indica donde


inicia la ejecución del hilo.
 Delegado:
o Public delegate void ThreadStart();
 C# puede inferir el delegado,
o permitiendo que sólo pasemos al constructor un método.
 Para iniciar su trabajo, el hilo tiene que llamar a la función Start().

Para pasar datos entre hilos:

 Métodos anónimos.
 Expresiones Lambda.
 Pasando argumentos al método Start().
o El delegado acepta como argumento un objeto tipo object.
o Debe realizarse casting.

Cada hilo tiene la propiedad Name que permite asignarle un nombre.

 Útil para depuración


 Sólo puede asignarse el nombre a un hilo una vez.

Hilos Foreground:

 Mantienen a la aplicación viva mientras alguno de ellos siga corriendo.


 HilosBackground: No mantienen a la aplicación viva, si el hiloforegroundtermina, de
forma abrupta terminantodos los hilosbackground. Se puede cambiar el estado de un
hilomediante la propiedadIsBackground.

Sincronización

Coordinar acciones entre hilos. Importante cuando los hilos acceden a


recursoscompartidos. Alternativas: Métodos de bloqueo simple Constructores de
bloqueo Constructores de señalización Constructores de sincronización no bloqueante

Bloqueo

Hilo bloqueado = se pausa su ejecución por algún motivo.

 Inmediatamente devuelve el control al ser bloqueado.

Desbloqueo sucede:

 Se satisface la condición de bloqueo


 Se termina el timeout
 Debido a una interrupción
 Debido a que la operación aborto

Spinning
Un hilo debe pausarse hasta que una condición se cumpla.

Método alternativo al bloqueo:

Spinning.

 El hilo se queda esperando por una condición, dando vueltas en un lazo:


o while(!proceder)
o while(DateTime.Now<tiempoInicio)
o while(!proceder)Thread.Sleep(10)

Es efectivo cuando se espera que una condición se cumpla pronto.

Estado de los Hilos.

Gráfico de cinco estados.

Unstarted: no esta funcionando solo esta creado

Running: empieza a desarrolar el codigo.

Wait sleep join: si entra a bloqueo.

Abort requested: si se aborta la operación

Sttoped: si el hilo termina su tarea.

Bloqueo exclusivo

El bloqueo exclusivo asegura que sólo un hilo pueda acceder a un recurso compartido.

 Opciones:
o Lock
o Mutex

¿Cuándo es necesario?

El hilo uno cambio el valor de B

En el h2 se hace una excepción

Gráfico 2

Lock()

Bloquear el código que está generando el problema, solo lectura, estático, B valdria cero entonces
no entra al if y ya no se produce el problema.

Monitor

Necesito finally y liberar el objeto.

Como escoger el objeto de sincronización

Puede ser cualquier objeto visible en los hilos.


Condición: debe ser un tipo referencia.

 Debería ser private.


 Puede ser un miembro de instancia o un miembro estático.

¿Cuándo bloquear?

 Acceso a la escritura de un recurso compartido.


o Asignación
o Incremento

Ejemplo: otro grafico de código.

Primer grafico con errores, segundo grafico corregido.

Mutex

Similar alock.

Funciona entre múltiples procesos.

 Mucho más lento que lock. (50 veces).

Para realizar el bloque se emplea el método WaitOne()y para liberar ReleaseMutex().

Si el objeto Mutexes cerrado o eliminado (dispose), selibera el recurso. Sólo se puede liberar
desde el hilo/proceso que realizóel bloqueo. Uso primario deMutexentre procesos: Asegurar que
sólo una instancia del programa puedaejecutarse al mismo tiempo.

Semáforos.

Similar alock/Mutex.

Sin embargo, no tiene un dueño.

 Cualquier hilo puede liberarlo.

Comparación:

 Bar–Tiene una capacidad, regida por un portero.


 Una vez que se llena. Nadie más puede entrar.
 Por cada persona que sale, una persona puede entrar.

Constructor requiere dos argumentos: número de espacios disponibles, y el número total de


espacios.

Ayudan a limitar la concurrencia.

practica01

Hilo principal del uno al cincuenta

Hilo trabajador también va a empezar a imprimir del uno al cincuenta


Ver en el rendimiento el número de hilos

En la segunda parte pausar el hilo a 2ms

El deber es para el próximo día jueves, se puede hacer entre dos

Tiene que ser aplicación de consola .net framework.

En la 64 empieza lo de los modelos

También podría gustarte