Skip to content

Threads

Threads POSIX

Les thread POSIX ou Pthread sont une API pour l développement d'applications parallèles qui partages les même données.

Pthread

L'espace mémoire n'est pas dupliqué.

POSIX ajoute à l'espoace virtuele à ala pile et à la TLS.

Création de pthread

Fonctions

// Créer un nouveau trhead et son point d''entre est la fonction func avec l'arguement arg.
int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*func) (void*), void* arg);

// Termine le thread avec le status val. `Un return x` équivalent à un `pthread_exit(x)`
// => ça veut dire qu'on peut faire les deux !!! (on peut très bien faire juste de return)
void pthread_exi(void *ret);


// Les deux fonction retourne 0 en cas de succès et un code d'érreur sinon.

Exemple

void* print(void *str) {

    printf((char*) str);
    return NULL;
}

int main(int argc, char* argv) {

    pthread_attr_t att;
    pthread_attr_init(&att);

    pthread_t th;
    pthread_create(&th, &att, print, "hel");

    sleep(1);
    printf("lo\n");

    return 0;
}

Attente

Fonction

// Attend la fn du thread et délivre son statut
int phtread_join(pthread_t th, void**statut);

Exemple

void* print(void *str) {

    printf((char*) str);
    return NULL;
}

int main(int argc, char* argv) {

    pthread_attr_t att;
    pthread_attr_init(&att);

    pthread_t th;
    pthread_create(&th, &att, print, "hel");

    // vvv ICI A LA PLACE DU SLEEP
    pthread_joint(th, NULL)
    printf("lo\n");

    return 0;
}

MUTEX

Fonctions

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

// Permet de vérouiller la mutex.
int pthread_mutex_lock(pthread_muex_t* mutex);
// Dévrouiller la mutex
int pthread_mutex_unlock(pthread_muex_t* mutex);

// les deux fonction retourne 0 et code d'érreur si erreur