Advertisement
d1cor

hilos3.c

Nov 3rd, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. /*******************************************
  2. * Author     : Diego Cordoba / @d1cor      *
  3. * Purpose    : JuncoTIC - juncotic.com     *
  4. * Contact    : diego@juncotic.com          *
  5. *******************************************/
  6.  
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<sys/types.h>
  10. #include<sys/stat.h>
  11. #include<unistd.h>
  12. #include<string.h>
  13. #include<fcntl.h>
  14. #include<errno.h>
  15. #include<pthread.h>
  16.  
  17. //Hilos detached (mejor rendimiento)
  18.  
  19. #define NUM_TH 10
  20.  
  21. void* funcion(void*);
  22.  
  23. int main(int argc, char** argv) {
  24.  
  25.     char *error;
  26.     int info[NUM_TH],i;
  27.  
  28.     // creamos el id de hilo (pthread_d es un long int)
  29.     pthread_t thread_id[NUM_TH];
  30.  
  31.     printf("Tamanio del id: %d\n",sizeof(pthread_t));
  32.  
  33.     //creamos NUM_TH hilos, y le pasamos a cada uno, un arg
  34.  
  35.     printf("creando el hilo principal...\n");
  36.  
  37.     printf("el hilo principal crea al resto\n");
  38.     for(i=0;i<NUM_TH;i++){
  39.         printf("El hilo principal crea al hilo %d\n",i);
  40.         *(info+i) = i;
  41.         if(pthread_create((thread_id+i), NULL, funcion, (void*)(info+i))){
  42.             error="pthread_create";
  43.             goto err;
  44.         }
  45.         sleep(1);
  46.     }
  47.  
  48.     //terminamos el hilo principal:
  49.     printf("terminando el hilo principal...\n");
  50.     pthread_exit(NULL);
  51.  
  52.     return 0; //termina el proceso -> tambien terminan todos los hilos
  53.  
  54. err:
  55.     fprintf(stdout,"%s %d - %d\n",error,errno,strerror(errno));
  56.     exit(1);
  57. }
  58.  
  59. void* funcion(void* dato){
  60.     int dato_en_th;
  61.     pthread_detach(pthread_self());
  62.     sleep(1);
  63.     dato_en_th = *((int*)dato);
  64.     printf("Ejecutando el hilo %d\n",dato_en_th);
  65.     printf("terminando el hilo creado %d...\n",dato_en_th);
  66.     pthread_exit(NULL);
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement