Programacion Concurrente
Programacion Concurrente
aparece
cuando
dos
ms
procesos
son
3. Threads/hilos
Definicin: Una secuencia de control dentro de un proceso que
ejecuta sus instrucciones de forma independiente.
Existe concurrencia a dos niveles: entre procesos y entre threads.
Procesos: entidades pesadas con espacio en el ncleo. Cambios de
contexto costosos
Threads: entidades ligeras en el espacio de usuario. Cambios de
contexto poco costosos.
Los threads/hilos pueden estar en dos niveles: a nivel usuario
(p.ej. java) o a nivel del sistema operativo (hilos del sistema).
Los threads/hilos de sistema dan soporte a los threads/hilos de
usuario mediante un API (Application Program Interface).
Estndares
Cada sistema operativo implementa los threads/hilos de sistema
de manera diferente: win32, OS/2 y POSIX (pthreads).
Implementacin
A nivel usuario (librera) o a nivel de ncleo (llamadas al sistema).
El estndar POSIX es del primer tipo.
Planificacin
Existen procesadores lgicos (los threads compiten por cada
procesador lgico), y los procesadores lgicos compiten por los
fsicos (SOLARIS).
4. Threads/hilos en Java
5.
8. Ejemplo Hora
9. Ejemplo Sonido
11. Resumen
Los programas concurrentes tienen varias hebras de ejecucin
(threads) que avanzan a la vez
En Java las hebras son objetos de una clase
que extiende Thread
que implementa Runnable
El mtodo run() determina qu hace la hebra Para arrancar
una hebra t se hace t.start()
Una hebra termina cuando se llega al final de run() tambin
por interrupciones
Un programa termina cuando terminan todas sus hebras