Programación Concurrente y paralela

Páginas: 22 (5358 palabras) Publicado: 12 de marzo de 2014
Programación con POSIX Threads

CAPÍTULO II: Programación con
POSIX Threads
II.1. INTRODUCCION A LA PROGRAMACION CON THREADS
Una librería o paquete de threads permite escribir programas con varios puntos
simultáneos de ejecución, sincronizados a través de memoria compartida. Sin embargo
la programación con hilos introduce nuevas dificultades. La programación concurrente
tiene técnicas yproblemas que no ocurren en la programación secuencial. Algunos
problemas son sencillos (por ejemplo el ínter bloqueo) pero algunos otros aparecen
como penalizaciones al rendimiento de la aplicación.
Un thread es un concepto sencillo: un simple flujo de control secuencial. Con un
único thread existe en cualquier instante un único punto de ejecución. El programador
no necesita aprender nadanuevo para programar un único thread.
Sin embargo, cuando se tienen múltiples hilos en un programa significa que en
cualquier instante el programa tiene múltiples puntos de ejecución, uno en cada uno de
sus threads. El programador decide cuando y donde crear múltiples threads, ayudándose
de una librería o paquete en tiempo de ejecución.
En un lenguaje de alto nivel, las variables globales soncompartidas por todos los
threads del programa, esto es, los hilos leen y escriben en las mismas posiciones de
memoria. El programador es el responsable de emplear los mecanismos de
sincronización de la librería de hilos proporcionada por el lenguaje para garantizar que
la memoria compartida se acceda de forma correcta por los hilos. Las facilidades
proporcionadas por la librería de hilosque se utilice son conocidas como primitivas
ligeras, lo que significa que las primitivas de:





Creación
Mantenimiento
Sincronización y
Destrucción

Son suficientemente económicas en esfuerzo para las necesidades del programador.

II.2. EL ESTANDAR POSIX THREADS
Uno de los problemas que se tenían al utilizar múltiples threads de ejecución es
que hasta hace poco no existía unestándar para ello. La extensión POSIX.1c se aprobó
en Junio de 1995. Con la adopción de un estándar POSIX para los hilos, se están
haciendo más comunes las aplicaciones con Threads.
El estándar POSIX Threads significa técnicamente el API Thread especificado
por el estándar formal internacional POSIX 1003.1c-1995. POSIX significa: Portable
Operating System Interface. Todas las fuentes queempleen POSIX 1003.1c, POSIX.1c
o simplemente Pthreads, deben incluir el archivo de encabezado pthread.h con la
directiva:

23

Programación con POSIX Threads

Dr. Mario Rossainz López

#include

Ya que pthread es una librería POSIX, se podrán portar los programas hechos
con ella a cualquier sistema operativo POSIX que soporte threads. Por tanto, para crear
programas que hagan usode la librería pthread.h necesitamos en primer lugar la librería
en sí. Esta viene en la mayoría de las distribuciones de LINUX y si no es así, se puede
bajar de la red.
Una vez que tenemos la librería instalada, deberemos compilar el programa y
ligarlo con dicha librería en base al compilador que se utilice. La librería de hilos
POSIX.1c debe ser la última librería especificada en la líneade comandos del
compilador:
CC . . . –lpthread

Por ejemplo, la forma más usual de hacer lo anterior, si estamos usando un
compilador GNU como gcc, es con el comando:
gcc prog_con_hilos.c –o prog_con_hilos_ejecutable -lpthread

En POSIX.1c todos los hilos de un proceso comparten las siguientes características:











El espacio de direcciones
El ID del procesoEL ID del proceso padre
El ID del proceso líder del grupo
Los identificadores de usuario
Los identificadores de grupo
El directorio de trabajo raíz y actual
La máscara de creación de archivos
La tabla de descriptores de archivos
El timer del proceso

Por otro lado, cada hilo tiene la siguiente información específica:







Un identificador de hilo único
La política de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programacion concurrente
  • PROGRAMACION CONCURRENTE
  • programación concurrente
  • Programación en paralelo
  • Fzas Concurrentes Paralelas
  • Programacion concurrentes hilos
  • Programación concurrente servlet
  • Programación concurrente en java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS