Algoritmos y programación 3 - cátedra Fontela Concurrencia.

Post on 24-Jan-2016

224 views 0 download

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