Algoritmos y programación 3 - cátedra Fontela Concurrencia.
-
Upload
ricardo-rojas-miranda -
Category
Documents
-
view
224 -
download
0
Transcript of Algoritmos y programación 3 - cátedra Fontela Concurrencia.
Algoritmos y programación 3 - cátedra Fontela
Concurrencia
A3F
Concurrencia La Real Academia Española dice:
Concurrencia.
1. f. Acción y efecto de concurrir.
2. f. Conjunto de personas que asisten a un acto o reunión.
3. f. Coincidencia, concurso simultáneo de varias circunstancias.
En computación: Capacidad de los sistemas de realizar mas de una tarea al mismo
tiempo
A3F
Concurrencia
Proceso Programa en ejecución Tiene recursos propios
Hilo Subproceso Utiliza los recursos del proceso
A3F
Tipos de concurrencia
Multiprogramación Un solo procesador
Multiprocesamieto Mas de un procesador
Computación distribuida Los procesos corren en máquinas distintas
A3F
Ademas...
Varios procesos en paralelo Ej: Varias instancias de un programa Comparten recursos externos (archivos)
Varios hilos (multithreading) Dentro del mismo proceso, mas de un hilo Comparten recursos externos e internos (objetos,
clases)
A3F
Usos
Optimización de tiempos Operaciones de E/S son lentas Hago cosas “en background” mientras el usuario
sigue trabajando. Ejemplo, eclipse compila todo el tiempo sin que yo tenga que dejar de escribir
Diseño
A3F
Concurrencia en Java
Interfaz Runnable y clase Thread
Manejada por la JVM Scheduler basado en prioridades
A3F
Concurrencia en Java
class Hilo extends Thread {
public void run() {//codigo del hilo
}}
...
Hilo unHilo = new Hilo();
unHilo.start();//start invoca a run()
...
A3F
Concurrencia en Java
class Hilo implements Runnable {
public void run() {//codigo del hilo
}}
...
Thread t = new Thread(new Hilo());
t.start();
...
A3F
Concurrencia en C#
public class Hilo {
public void run() {
//codigo del hilo}
}
...
Hilo unHilo = new Hilo();
Thread t = new Thread (new ThreadStart(unHilo.run));
t.start();
A3F
Problemas de la concurrencia
No-determinismo No tenemos control sobre el flujo de ejecución
Recursos críticos No pueden ser accedidos por varios objetos al
mismo tiempo Necesitamos exclusión mutua
Semaforos Cerrojos Monitores
A3F
Problemas de la concurrencia
Deadlock (interbloqueo)
A3F
Problemas de la concurrencia
Starvation (inanición) Proceso que nunca obtiene recursos
Inversion de prioridades
A3F
Ejercicios