Aplicaciones Multihilo

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

Computadores de alta velocidad (la lista top500).
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles Señales Sistemas Operativos.
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles fork() Sistemas Operativos.
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a BerkeleyDB Sistemas Operativos.
Programación Interactiva Hilos
T5-multithreading SO-Grado Q1.
Ejemplo de Programa C++
Funciones y recursividad
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Estructuras de control
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Programación, Algoritmos y Estructuras de Datos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
INFORMATICA I Arreglos 2 CLASE 18.
INFORMATICA I Funciones CLASE 13.
Concurrencia en JAVA JAVA es un lenguaje que tiene soporte de concurrencia, mediante Threads. Un thread es un proceso “liviano” (lightweight process) que.
Conceptos de la clase anterior
Mergesort como ejemplo de Divide y Vencerás
Comunicación y sincronización entre procesos
UPV - EHU Konputagailuen Arkitektura eta Teknologia Saila Departamento de Arquitectura y Tecnología de Computadores 1 Control de procesos y sincronización.
SOBRECARGA DE FUNCIONES
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
String o Cadenas Prof. Gonzalo Pastor. Cadenas o String ► En C, una cadena o texto se define como un vector de caracteres de longitud determinada que.
Tema 12: Programación multihilo
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
FUNCIONES EN C.
Programación I Teoría II
4A4A4A4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Diseño de algoritmos “Estructuras”
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
Paso de Vectores como Parámetros
LENGUAJE “C” Programación.
Archivos Programación.
PONNHI PONNHI Una Nueva Arquitectura Microkernel Pthreads en Espacio de Usuario José Manuel Rodríguez García Juan A. Rico Gallego Jesús M. Álvarez Llorente.
Semana 5 Subprogramas..
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
FUNCIONES EN C.
Comunicación y sincronización entre procesos Realizado por Kepa Bengoetxea Kortazar
Ing Florencia Ferrigno Tecnicas Digitales 3
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
Cátedra de COMPUTACIÓN FACULTAD DE INGENIERÍA - UNA La mejor manera de aprender Programación es PROGRAMANDO !!!!!! CLASE Nro. 1.
M.C. Juan Carlos Olivares Rojas
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Aplicado a programas openMP
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
Ejemplos openMP.
Programación de Memoria Compartida
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Programación de Memoria Compartida
Pablo Abrile1 Threads Lenguajes de Programación I.
Introducción a la Programación “El lenguaje C” Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
LENGUAJE “C” Programación. Condicionales Los condicionales permiten al programa escoger entre varios posibles resultados dependiendo de la evaluación.
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
TEMA 2. Programación Concurrente
APUNTADORES.
FLOR ALBA ACEVEDO COD JENNIFFER TATIANA TORRES COD
UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION INSTRUCCIONES INTERATIVAS.
LENGUAJE “C” Programación.
Desarrollador Profesional de Juegos Programación III Unidad II Trabajando con bloqueo de datos.
Hilos Java Profesor Elian Rojas Berrocal
Desarrollador Profesional de Juegos Programación III Unidad II Introdución a threading en windows.
Desarrollador Profesional de Juegos Programación III Unidad II introducción a Mutex Secciones críticas.
UNIDAD 8 Lista Enlazada: Eliminar Deseamos eliminar un elemento llamado elem de la lista enlazada. Es posible que la variable ini sea modificada. main(){
Message Passing Interface
Transcripción de la presentación:

Aplicaciones Multihilo Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Aplicaciones Multihilo Threads

Threads – Introducción Una aplicación está compuesta por uno o más procesos, los cuales a su vez podrían estar divididos en threads Aplicación Procesos Threads

Threads – Introducción Dentro del espacio de ejecución de un proceso, los threads funcionan de manera “simultánea” (concurrencia) Proceso A Todos los threads comparten la información del proceso por encontrarse dentro del mismo. Proceso A int a = 33; a = a + 1 a = a - 1 print a; Hilo 1 Hilo 2 Situaciones como esta pueden llevar a codigo no deterministico. El acceso a los recursos debe ser correctamente sincronizado.

Threads – ejemplo 1/2 #include <pthread.h> #include <stdio.h> void *print_fnc( void *ptr ); int p = 5; int main() { pthread_t thr1, thr2; char *m1 = "Thr1"; char *m2 = "Thr2"; int r1, r2; r1 = pthread_create( &thr1, NULL, print_fnc, (void*) m1); r2 = pthread_create( &thr2, NULL, print_fnc, (void*) m2); pthread_join( thr2, NULL); pthread_join( thr1, NULL); printf("Thread 1 devolvio: %d y el Thread 2: %d\n", r1, r2); }

Threads – ejemplo 2/2 Makefile: all: void *print_fnc( void *ptr ) { int i = 0; char *message; message = (char *) ptr; for (i; i<1000; i++) { p = p + 1; printf("%s : %d\n", (char*)message, p); sleep(1); } Makefile: all: gcc -ggdb thread.c -o thread -lpthread

Threads – ejecución debian:~/c/threads# make gcc -ggdb thread.c -o thread -lpthread debian:~/c/threads# ./thread Thr2 : 6 Thr1 : 7 Thr1 : 8 Thr2 : 9 Thr2 : 11 Thr1 : 10 Thr1 : 12 Thr2 : 13 Thr1 : 14 Thr2 : 15 Thr1 : 16 Thr2 : 16 Thr2 : 17 Thr1 : 17 Thr1 : 18 Thr2 : 19 Thr2 : 20 Thr1 : 21 Thr1 : 22 Noten como el procesador planifica estos hilos según va teniendo disponibilidad. Nada garantiza que se ejecute uno y luego el otro. Situaciones anómalas se pueden producir al no proteger correctamente la sección crítica !!!! !!!!

Threads – sincronización #include <pthread.h> #include <stdio.h> void *print_fnc( void *ptr ); int p = 5; pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; … void *print_fnc( void *ptr ) { int i = 0; char *message; message = (char *) ptr; for (i; i<1000; i++) { pthread_mutex_lock( &mutex1 ); p = p + 1; pthread_mutex_unlock( &mutex1 ); printf("%s : %d\n", (char*)message, p); sleep(1); }