Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - vicds18

#1
Programación C/C++ / hilos con c urge
5 Diciembre 2017, 10:38 AM
Buenas no puedo hacer que pase a mi segundo hilo



codigo:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <pthread.h>
#include <windows.h>



pthread_mutex_t candado1=PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t candado2=PTHREAD_MUTEX_INITIALIZER;


pthread_cond_t condv1=PTHREAD_COND_INITIALIZER;
pthread_cond_t condv2=PTHREAD_COND_INITIALIZER;



int ElementoA=0, Creacion_de_elementos_de_A=0;
int ElementoB=0, Creacion_de_elementos_de_B=0;

void * Hilo1(void *arg)
{



   while(1)
    {



        if(0<=ElementoA){
    Creacion_de_elementos_de_A=ElementoA++;
        printf("Hilo1: Elemento A creado\n",ElementoA);
        Sleep(1000);

        }



        if(3 == ElementoA){

        printf("Hilo1:Se lleno la pila\n",ElementoA);
        Sleep(1000);
        printf("Hilo1:Se va a vaciar la pila\n",ElementoA);

        Sleep(1000);

        break;

        }





    }

   pthread_exit(NULL);
return 0;
}

void * Hilo2(void *arg)
{



    while(1)

    {



  pthread_mutex_lock(&candado1);
  pthread_cond_wait(&condv1,&candado1);
  pthread_mutex_unlock(&candado2);
        if(0>=ElementoB){



               Creacion_de_elementos_de_B=ElementoB++;
            printf("Hilo2: Elemento B creado\n",ElementoB);

        }

             if(3== ElementoB ){

            printf("Hilo2: Se lleno la pila\n",ElementoB);

            Sleep(1000);
            printf("Hilo2:Se va a vaciar la pila\n",ElementoB);
            }

    pthread_mutex_lock(&candado1);
    pthread_cond_signal(&condv2);
    pthread_mutex_unlock(&candado2);
    }


   pthread_exit(NULL);
   return 0;
}


int main(void)
{

    pthread_t IdHilo1, IdHilo2;


    printf("Inicia produccion()\n");
srand(time(NULL));

  pthread_mutex_init(&candado1,NULL);
      pthread_mutex_init(&candado2,NULL);

    pthread_create(&IdHilo1,NULL,Hilo1,NULL);
    pthread_create(&IdHilo2,NULL,Hilo2,NULL);


    pthread_join(IdHilo1,NULL);
    pthread_join(IdHilo2,NULL);

      pthread_mutex_init(&candado1,NULL);
      pthread_mutex_init(&candado2,NULL);


    return 0;


}
#2
Programación C/C++ / Programa en c
30 Noviembre 2017, 05:36 AM
Hola necesito su ayuda tengo que realizar un programa que simule una linea de produccion de dos elementos (A y B) que se almacenen en una pila y despues esta se vacie y produzca el tipo B y cicle, de modo que no se como hacer bien la pila y generar que los hilos produzcan en tiempo aleatorio los elementos.