fork download
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #define MAX_THREADS 10
  7.  
  8. // tipo de datos y tabla con los parametros
  9. typedef struct {
  10. int id;
  11. char *cadena;
  12. } thr_param_t;
  13.  
  14. thr_param_t param[MAX_THREADS];
  15. // tenemos que crear un array para los parámetros porque los pasamos por
  16. // referencia. Así, si solo tuviéramos una variable para los parámetros
  17. // al modificar esta modificaríamos todas las que habíamos pasado anteriormente
  18. // porque los threads no se quedan con el valor sino con la dirección
  19.  
  20. pthread_mutex_t lock;//CREO EL MUTEX GLOBAL
  21.  
  22. // Esta es la funcion que ejecutan los threads
  23. void* funcion_thr(void* pParametro){
  24. pthread_mutex_lock(&lock);// HAGO LOCK
  25. thr_param_t parametro = *((thr_param_t*)pParametro);
  26. printf("%s %d\n", parametro.cadena, parametro.id);
  27. pthread_mutex_unlock(&lock);// HAGO UNLOCK
  28. // Una vez terminamos, devolvemos el valor.
  29. pthread_exit(&(parametro.id));
  30. }
  31.  
  32. int main(){
  33. pthread_mutex_init(&lock, NULL);//INICIALIZO EL MUTEX
  34.  
  35. int i, *resultadoLocalMain;
  36. // tabla con los identificadores de los threads
  37. pthread_t vectorDeHilos[MAX_THREADS];
  38. // creamos los threads
  39. printf("Creando threads...\n");
  40. for (i=0; i<MAX_THREADS; i++) {
  41. param[i].cadena = strdup("Hola, soy el thread numero: ");
  42. param[i].id = i;
  43. pthread_create(&vectorDeHilos[i], NULL, funcion_thr,( void *)&param[i]);
  44. }
  45. // esperamos que terminen los threads
  46. printf("Threads creados. Esperando que terminen...\n");
  47. for (i=0; i<MAX_THREADS; i++) {
  48. pthread_join(vectorDeHilos[i], (void**)&resultadoLocalMain);
  49. printf("El thread %d devolvio el valor %d\n", i, *resultadoLocalMain);
  50. }
  51. // sacamos el mensajito y salimos del programa
  52. printf("Todos los threads finalizados. Adios!\n");
  53. return 0;
  54. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/home/xBQSAJ/cccZqZBL.o: In function `main':
prog.cpp:(.text.startup+0x6d): undefined reference to `pthread_create'
prog.cpp:(.text.startup+0x94): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty