Synchronisieren von zwei mit pthreads mutex in C

Brauche Hilfe mit dem synchronisieren von zwei threads mit mutex. Iam neu in C und Mutexe und Im nicht sicher, was hier zu tun ist. Der code hat zwei threads, zählt bis zehn und druckt jede Zahl, die aber nicht synchron, so wird es nicht drucken synchronisiert, es ist die Hälfte synchronisiert. Bedeutet, dass ich nur ärger zu bekommen am Ende, manchmal druckt er 8..9..11, 8..9..10..10 und so weiter.

Kann ich keine änderungen an den raw-code, wenn Sie nehmen die Linien über Mutexe, das ist der raw-code. Ich kann nur hinzufügen, Zeilen über Mutexe.

#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;
}
  • bitte posten Sie alle Ihre code
  • undefined reference to 'writeloop'
  • Sorry, fixierte den code jetzt. Bitte versuchen Sie es erneut 🙂
InformationsquelleAutor Codebox | 2013-02-12
Schreibe einen Kommentar