Publi

  • Concurrencia, POSIX threads y variables compartidas en C


    Hace poco veíamos cómo empezar a hacer nuestros primeros programas multi-thread utilizando POSIX threads. Aunque pronto surge una nueva necesidad: compartir datos entre el proceso principal y el thread que se ha creado, al menos para decirle qué queremos que haga. Para eso podemos utilizar el último argumento de la función pthread_create(), el cuál es un puntero a void, por lo que podemos pasar cualquier tipo de variable. Por ejemplo un número:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>

    void *newtask(void *_number)
    {
      int number = *(int*)_number;
      printf("The number I was asked for: %d\n", number);
      pthread_exit(NULL);
    }

    int main (int argc, char *argv[])
    {
       pthread_t thread;
       int rc;
       int i;
       int number = 99;

       printf ("Main process just started.
    Leer artículo completo