Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- #include <sys/types.h>
- #include <pthread.h>
- #include <semaphore.h>
- struct valores{
- int x;
- int y;
- }
- pthread_attr_t atributos;
- sem_t semaforosuma, semaforomult, semaforomain; // Declaración de semáforos
- pthread_t th1, th2. th3, th4; // Declaración de threads
- // Definición de funciones
- void multiplica (producto){
- sem_wait(&semaforomult);
- struct valores *amultiplicar = amultiplicar
- int producto;
- producto=a*b;
- sem_post(&semaforomult);
- sem_post(&semaforomain);
- pthread_exit(0);
- }
- void suma (void * ptr){
- sem_wait(&semaforosuma);
- printf("\nSuma ha esperado bien\n");
- pthread_exit(0);
- }
- //void imprime (void * ptr){
- // char *men=(char*)ptr;
- // write(1,men,strlen(men));
- // pthread_exit(0);
- //}
- int main (void){
- pthread_attr_init (&atributos); // Inicialización de atributo
- sem_init(&semaforomult, 0,0); // Inicialización del semáforo
- sem_init(&semaforosuma, 0,0); // Inicialización del semáforo
- sem_init(&semaforomain, 0,0); // Inicialización del semáforo
- struct valores amultiplicar, asumar;
- // PRIMER PRODUCTO
- producto.x=2;
- producto.y=4;
- sem_post(&semaforomult);
- sem_wait(&semaforomain);
- // SEGUNDO PRODUCTO
- // producto.x=2;
- // producto.y=3;
- // sem_post(&semaforomult);
- // sem_wait(&semaforomain);
- pthread_create(&th1, &atributos,multiplica, amultiplicar);
- pthread_create(&th3, &atributos,suma, asumar);
- // pthread_create(&th4, &atributos,(resultado) imprime, "\n El thread 3 se ha ejecutado \n");
- printf("Main termina");
- sem_destroy(&semaforomult);
- sem_destroy(&semaforosuma);
- sem_destroy(&semaforomain);
- sleep(1);
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement