elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con ejercicio de Hebras/Hilos y semaforos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con ejercicio de Hebras/Hilos y semaforos  (Leído 1,816 veces)
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Ayuda con ejercicio de Hebras/Hilos y semaforos
« en: 26 Octubre 2013, 21:14 pm »

EEl programa compila, pero no funcion por lo que no se cual puede ser el error.
Código
  1. #include <iostream>
  2. #include <pthread.h>
  3. #include <semaphore.h>
  4. using namespace std;
  5.  
  6. const int num_items = 75 ;
  7. const int tam_vec = 15 ;
  8. int vector[tam_vec] ;
  9. int primera_libre = 0 ;
  10. int primera_ocupada = 0 ;
  11. sem_t puede_leer, puede_escribir ;
  12.  
  13.  
  14.  
  15. int producir_dato(){
  16.  
  17. int contador = 1 ;
  18. return contador++ ;
  19. }
  20.  
  21. void consumir_dato( int dato ){
  22.  
  23. cout << "dato recibido: " << dato << endl ;
  24. }
  25.  
  26.  
  27.  
  28. void * productor( void * ){
  29.  
  30. for( unsigned i = 0 ; i < num_items ; i++ ){
  31. if (primera_libre == tam_vec)
  32. primera_libre = 0;
  33. int dato = producir_dato() ;
  34. sem_wait (&puede_escribir);
  35. vector[primera_libre] = dato ;
  36. primera_libre++;
  37. sem_post(&puede_leer);
  38. }
  39. }
  40.  
  41. void * consumidor( void * ){
  42.  
  43. for( unsigned i = 0 ; i < num_items ; i++ ){
  44. int dato ;
  45. if (primera_ocupada == tam_vec)
  46. primera_ocupada = 0;
  47. sem_wait (&puede_leer);
  48. dato = vector[primera_ocupada] ;
  49. primera_ocupada++ ;
  50. sem_signal(&puede_escribir);
  51. consumir_dato( dato ) ;
  52. }
  53. }
  54.  
  55. int main(){
  56. pthread_t consumidora, productora;
  57. sem_init( &puede_leer, 0, 1);
  58. sem_init( &puede_escribir, 0 , 0);
  59.  
  60. pthread_create(&productora, NULL, productor, NULL);
  61. pthread_create(&consumidora, NULL, consumidor, NULL);
  62.  
  63. pthread_join( productora, NULL ) ;
  64.   pthread_join( consumidora, NULL ) ;
  65.  
  66. sem_destroy( &puede_escribir );
  67. sem_destroy( &puede_leer );
  68. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sockets y Hilos ?? !!! AYUDA
Programación C/C++
<<<-Basura->>> 7 6,515 Último mensaje 11 Diciembre 2011, 09:42 am
por <<<-Basura->>>
ayuda con hilos
Java
luisdoros 1 5,514 Último mensaje 17 Julio 2012, 02:21 am
por leogtz
ayuda algoritmos de dekker y semaforos
Programación C/C++
include (); 0 2,610 Último mensaje 7 Septiembre 2012, 08:15 am
por include ();
[Ayuda] Hilos - basico
Programación C/C++
bemone 4 2,527 Último mensaje 20 Junio 2013, 20:55 pm
por bemone
Necesito ayuda urgente con hebras/hilos y semaforos
Programación C/C++
Lotux5 1 2,472 Último mensaje 26 Octubre 2013, 15:45 pm
por Lotux5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines