Advertisement
d1cor

pthread1.c

Oct 25th, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 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: %ld\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: %ld\n",thread_id);
  50.  
  51.     //esperamos a que el hilo "hijo" termine: join (equivalente al wait)
  52. //  system("ps fle");
  53.     pthread_join(thread_id,NULL);
  54.         //id del hilo a esperar
  55.         // puntero de retorno, o NULL si el hilo no retorna nada
  56.  
  57.     //terminamos el hilo principal:
  58.     printf("terminando el hilo principal...\n");
  59.     //exit(1);
  60.     pthread_exit(NULL);
  61.  
  62.     return 0; //termina el proceso -> tambien terminan todos los hilos
  63.  
  64. err:
  65.     fprintf(stdout,"%s %d - %d\n",error,errno,strerror(errno));
  66.     exit(1);
  67. }
  68.  
  69. void* funcion(void* dato){
  70.     sleep(2);
  71.     //dato es un argumento pasado al hilo
  72.     printf("Ejecutando esta linea desde el hilo (TID: %li)\n",pthread_self());
  73.     //terminamos al hilo:
  74.     printf("terminando el hilo creado...\n");
  75.     pthread_exit(NULL);
  76. }
  77.  
  78. // https://users.cs.cf.ac.uk/Dave.Marshall/C/node30.html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement