Advertisement
d1cor

hilos1.c

Nov 3rd, 2016
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 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 joinable
  18.  
  19. void* funcion(void*);
  20.  
  21. int main(int argc, char** argv) {
  22.  
  23.     char *error;
  24.  
  25.     // creamos el id de hilo (pthread_d es un long int)
  26.     pthread_t thread_id;
  27.  
  28.     printf("Tamanio del id: %d\n",sizeof(pthread_t));
  29.  
  30.     //creamos un hilo
  31.  
  32. /*
  33.     int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
  34.     void *(*start_routine) (void *), void *arg);
  35.         *thread: donde almacenar el id del nuevo hilo
  36.         *attr: atributos opcionales para pasarle al hilo (o NULL si no es necesario)
  37.             pthread_attr_init() para cargar los atributos.
  38.  
  39.         start_routine: funcion ejecutada por el thread
  40.         arg: argumentos pasados a la funcion
  41.  
  42. */
  43.  
  44.     if(pthread_create(&thread_id, NULL, funcion, NULL)){
  45.         error="pthread_create";
  46.         goto err;
  47.     }
  48.  
  49.     printf("El id del hilo es: %li\n",thread_id);
  50.  
  51.     //esperamos a que el hilo "hijo" termine: join (equivalente al wait)
  52.     pthread_join(thread_id,NULL);
  53.         //id del hilo a esperar
  54.         // puntero de retorno, o NULL si el hilo no retorna nada
  55.  
  56.     //terminamos el hilo principal:
  57.     printf("terminando el hilo principal...\n");
  58.     pthread_exit(NULL);
  59.  
  60.     return 0; //termina el proceso -> tambien terminan todos los hilos
  61.  
  62. err:
  63.     fprintf(stdout,"%s %d - %d\n",error,errno,strerror(errno));
  64.     exit(1);
  65. }
  66.  
  67. void* funcion(void* dato){
  68.     //dato es un argumento pasado al hilo
  69.     printf("Ejecutando esta linea desde el hilo (TID: %li)\n",pthread_self());
  70.     //terminamos al hilo:
  71.     printf("terminando el hilo creado...\n");
  72.     pthread_exit(NULL);
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement