Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda con el ejercicio Productor-Consumidor

Estas en el tema de Duda con el ejercicio Productor-Consumidor en el foro de C/C++ en Foros del Web. Supongo que ya sabéis de que va este caso y he hecho este código: Código PHP: #include <pthread.h> #include <semaphore.h> #include <time.h>    #include <unistd.h>  #include <stdlib.h>  include < iostream > using namespace std ...
  #1 (permalink)  
Antiguo 16/10/2013, 06:21
 
Fecha de Ingreso: octubre-2013
Mensajes: 5
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta Duda con el ejercicio Productor-Consumidor

Supongo que ya sabéis de que va este caso y he hecho este código:
Código PHP:
#include <pthread.h>
#include <semaphore.h>
#include <time.h>   
#include <unistd.h> 
#include <stdlib.h> 

include <iostream>

using namespace std;
namespace PracticaUno{


int vec_int[tam_vec];
const 
int tam_vec 10;
const 
int num_items 50;
sem_t mproductorconsumidor;



int producir_dato() {
static 
int contador ;
return 
contador ++ ;
}

void consumir_datoint dato ){
cout << "\nDato recibido --> " << dato << endl ;
}


void productor void * ){     


for( 
unsigned i num_items i++ ){ 

        
int dato producir_dato() ;

        
wait(consumidor);
        
wait(m);

        
vec_int[i] = dato;

        
signal(cons);
        
signal(m);

    }
return 
NULL ;
}


void consumidorvoid * ){
    
    for( 
unsigned i num_items i++ ){ 
    
    
int dato ;

    
wait(consumidor);
    
wait(m);

    
dato=vec_int[i];

    
signal(cons);
    
signal(m);

    
consumir_datodato ) ;

    }
return 
NULL ;
}


void hebras(){

    
pthread_t hebra_productorahebra_consumidora;

    
sem_init(&productor010); 
    
sem_init(&consumidor00); 
    
sem_init(&m1); 
    
    
pthread_create(&hebra_productoraNULLproductorNULL); 
    
pthread_create(&hebra_consumidoraNULLconsumidorNULL);

    
pthread_join(hebra_productoraNULL);
    
pthread_join(hebra_consumidoraNULL);

    
sem_destroy(&productor);
    
sem_destroy(&consumidor);
    
sem_destroy(&m);

    
cout << "FIN" << endl;
}

}

int main(){

PracticaUno::hebras();


Mi problema es que el número de items es estrictamente mayor que el tamaño del vector donde alojar los items (he puesto que sean 50 items y 10 de tamaño del vector). ¿Estaría resuelto de esa forma con el semaforo m? Si no es así, alguna idea me vendría estupendamente xDDD

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:32.