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. // Esta es la funcion que ejecutan los threads
  21. void* funcion_thr(void* pParametro){
  22.  
  23. thr_param_t parametro = *((thr_param_t*)pParametro);
  24. printf("%s %d\n", parametro.cadena, parametro.id);
  25.  
  26. // Una vez terminamos, devolvemos el valor.
  27. pthread_exit(&(parametro.id));
  28. }
  29.  
  30. int main(){
  31.  
  32. int i, *resultadoLocalMain;
  33. // tabla con los identificadores de los threads
  34. pthread_t vectorDeHilos[MAX_THREADS];
  35. // creamos los threads
  36. printf("Creando threads...\n");
  37. for (i=0; i<MAX_THREADS; i++) {
  38. param[i].cadena = strdup("Hola, soy el thread numero: ");
  39. param[i].id = i;
  40. pthread_create(&vectorDeHilos[i], NULL, funcion_thr,( void *)&param[i]);
  41. }
  42. // esperamos que terminen los threads
  43. printf("Threads creados. Esperando que terminen...\n");
  44. for (i=0; i<MAX_THREADS; i++) {
  45. pthread_join(vectorDeHilos[i], (void**)&resultadoLocalMain);
  46. printf("El thread %d devolvio el valor %d\n", i, *resultadoLocalMain);
  47. }
  48. // sacamos el mensajito y salimos del programa
  49. printf("Todos los threads finalizados. Adios!\n");
  50. return 0;
  51. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/home/kEVBXY/ccq1t7f1.o: In function `main':
prog.cpp:(.text.startup+0x5d): undefined reference to `pthread_create'
prog.cpp:(.text.startup+0x84): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty