Linux - Semaforos

 
Vista:

Semaforos

Publicado por adpa (1 intervención) el 21/01/2006 16:21:06
Hola a tod@s:

Tengo que realizar el siguiente programilla en linux. He programado un poco pero ahora no se como seguir.

ENUNCIADO
• utilizando hilos, ejecute concurrentemente las dos funciones(hilo1 e hilo2 implementadas abajo) dentro del proceso.
• utilizando semáforos, los accesos sobre la variable global x se realicen en
exclusión mutua y el valor que ha de imprimir la función hilo2 siempre
aparezca en pantalla tras haberse escrito el del hilo1.


PROGRAMA QUE HE HECHO

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
int x ;

void *hilo1(void *arg)
{
int i,j;
sem_t sem1,sem2;
char c[5];
printf("Escriba un numero : \n");
scanf("%s",c);
x=atoi(c);/*convierte a entero*/
j=5;
for (i=1; i<=10; i++)
{
j = j + x;
x = x + 1;
}
printf("Hilo 1 j: %d\n", j );
}

void *hilo2(void *arg)
{
int k, j;
k = x * 2;
for(j=1; j<=3; j++)
{
k = k + j*x;
x = x - 1;
}
printf( "Hilo 2 k:%d \n", k );
}


int main ()
{
pthread_t id_hilo1,id_hilo2;
pthread_attr_t atrib1;
pthread_attr_t atrib2;

sem_init(

pthread_attr_init(&atrib1);
pthread_attr_init(&atrib2);
pthread_create(&id_hilo1, NULL, hilo1, NULL);
pthread_create(&id_hilo2, NULL, hilo2, NULL);
pthread_join(id_hilo1, NULL); /*Esperar por el 1º hilo*/
pthread_join(id_hilo2, NULL);

}

Me podeis ayudar a terminar.

MUCHAS GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder