Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P1
P2
P3
Solucin
El siguiente es el cdigo ms bsico, que permite crear el arbol de procesos.
Main () {
int p2,p3;
p2=fork()
If(p2==0) {
/*Codigo del primer hijo P2*/
printf(%i\n,getpid());
}else{
/*el Padre debe esperar que termine p2, para iniciar P3 */
waitpid(p2,null);
p3=fork();
if(p3==0){
printf(%i\n,getpid());
}
}
}
Un programa dentro de una fbrica, dispone de un arreglo de enteros, donde debe guardar
tres datos acerca de la temperatura de una caldera. En la primera posicin (0, 3, 6, etc) debe
guardar la temperatura mnima de la caldera, que se obtiene con la funcin threadMinimo. En la
segunda posicin (1,4,7,etc) debe guardar el mximo de la temperatura de la caldera, que se
obtiene con la funcin threadMaximo. Finalmente, en la tercera posicin, (2,5,8,etc) debe guardar
el promedio de las dos temperatura anteriores.
Solucin
El problema se podra ver como un productor consumidor, pero agregando 2
productores, que deben trabajar uno despus del otro, sobre un buffer circular.
Universidad del Bo-Bo Ingeniera de Ejecucin en Computacin e Informtica
Facultad Ciencias Empresariales Ingeniera Civil Informtica
Lo primero que hay que hacer, es definir un mutex para trabajar con las
variables comunes. (10 pts)
Luego se puede definir un contador para trabajar en forma sincronizada, por
ejemplo, cuando el contador es 0, entonces, escribe threadMinimo, cuando el
contador es 1, entonces escribe threadMaximo, y cuanto contador es 2, se
hacen los clculo y luego se reinicia el contador. (15 pts.)
Al ser un buffer circular, cuando se llega al final del arreglo, se vuelve al
principio. (5 pts)
Finalmente, se deben crear los threads usando pthread_create() y esperarlos
en el main, con pthread_join() (5pts).
}
}
/*Variables Globales*/
pthread_mutex elMutex;
main () {
pthread_t thMin,thMax,thEst;