Properly init the semaphore in the readers/writers code.
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 5 Mar 2018 15:29:12 +0000 (16:29 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 5 Mar 2018 15:29:12 +0000 (16:29 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
lecteursredacteurs/lecteursredacteurs.c

index 2c485d7d072390e1005292b7e70bba234f18a46b..e13f115f023cb1eea67e82bb6d71997941c7fbb5 100644 (file)
@@ -37,7 +37,7 @@ static void *redacteur(void *arg)
                // modifier les données de la base
                db++;
                printf("redacteur bd=%d\n", db);
                // modifier les données de la base
                db++;
                printf("redacteur bd=%d\n", db);
-               sleep(2);
+               sleep(1);
                sem_post(&redact);
        }
        return NULL;
                sem_post(&redact);
        }
        return NULL;
@@ -46,8 +46,8 @@ static void *redacteur(void *arg)
 int main()
 {
        pthread_t t1, t2;
 int main()
 {
        pthread_t t1, t2;
-       sem_init(&mutex, 0, 0);
-       sem_init(&redact, 0, 0);
+       sem_init(&mutex, 0, 1);
+       sem_init(&redact, 0, 1);
        pthread_create(&t1, NULL, redacteur, NULL);
        pthread_create(&t2, NULL, lecteur, NULL);
        pthread_join(t1, NULL);
        pthread_create(&t1, NULL, redacteur, NULL);
        pthread_create(&t2, NULL, lecteur, NULL);
        pthread_join(t1, NULL);