La synchronisation de deux pthreads utilisation de mutex dans C

Besoin d'aide avec la synchronisation de deux threads avec des mutex. Iam nouvelle C et les mutex et je ne suis pas sûr de quoi faire ici. Le code a deux fils qui, compte jusqu'à dix et imprime chaque numéro, mais n'est pas synchronisé, de sorte qu'il n'aura pas l'impression synchronisée, il est à moitié synchronisés. Signifie que je ne reçois que des ennuis à la fin, parfois, il imprime 8..9..11, 8..9..10..10 et ainsi de suite.

Je ne peut pas modifier le code brut, si vous enlevez les lignes à propos de mutex, qui est le code brut. Je peux seulement ajouter des lignes sur les mutex.

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

pthread_mutex_t mutex;

int g_ant = 0;

void *writeloop(void *arg) {
    while(g_ant < 10) {
        pthread_mutex_lock(&mutex);
        g_ant++;
        usleep(rand()%10);
        printf("%d\n", g_ant);
        pthread_mutex_unlock(&mutex);
    }
    exit(0);
}

int main(void)
{
    pthread_t tid;
    pthread_mutex_init(&mutex, NULL);
    pthread_create(&tid, NULL, writeloop, NULL);
    writeloop(NULL);
    pthread_join(tid, NULL);
    pthread_mutex_destroy(&mutex);
    return 0;
}
  • merci de poster tout votre code
  • undefined reference to 'writeloop'
  • Désolé, fixe le code maintenant. Merci d'essayer de nouveau 🙂
InformationsquelleAutor Codebox | 2013-02-12