3. Majuscules, Shadoks et franges
2. Shadokeries

Vous utiliserez le lien à la fin de chaque question pour envoyer chacune de vos réponses. Par mesure de précaution, il vous est aussi demandé de les mettre dans le fichier de nom demandé, dans votre public_html.

Le but de cet exercice est d’écrire un programme créant quatre threads (en plus du thread initial). Chacun effectuera une attente de durée aléatoire puis écrira une des lettres de l’alphabet Shadok (GA, BU, ZO et MEU) en fonction de son rang de création. Les threads devront se synchroniser de façon à afficher systématiquement l’alphabet dans l’ordre indépendamment des tirages aléatoires effectués.

Voici le squelette du code C que vous allez compléter dans les questions suivantes :

#define _XOPEN_SOURCE 700

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <ctype.h>
#include <errno.h>

#define NB_SHADOK 4

char *lettre[4]={"GA","BU","ZO","MEU"};

        /* Déclaration des variables globales si nécessaire */

void *thread_shadok(void *arg){

                /* Code à écrire en question 2 */

}

int main(){
        int i;
        int *p;
        pthread_t tid[4];

        srand(time(NULL));

        printf("Les shadoks vont commencer\n");

                /* Code à écrire en question 1 */

        printf("Les shadoks ont fini\n");
        return EXIT_SUCCESS;
}

Notes sur 6.


Warning: fsockopen(): unable to connect to ssl://www-master.ufr-info-p6.jussieu.fr:8083 (Connection refused) in /dsk/www-master/html/2016/ecrire/inc/distant.php on line 699

Warning: fsockopen(): unable to connect to ssl://www-master.ufr-info-p6.jussieu.fr:8083 (Connection refused) in /dsk/www-master/html/2016/ecrire/inc/distant.php on line 699

1 Main (2  point(s))

Complétez le code de la fonction main de façon à assurer la création des quatre threads exécutant la fonction thread_shadok. Vous prendrez garde à passer en paramètre à chaque thread son rang de création et de stocker son tid dans le tableau tid. Votre code doit de plus assurer que l’affichage final "Les shadoks ont fini" ne soit réalisé qu’une fois les quatre threads effectivement terminés.

Exemple d'appel :
$PWD/bin/shadok
Barème

- 
- 


2 Threads (4  point(s))

Donnez le code de la fonction thread_shadok réalisant le traitement décrit ci-dessus. La synchronisation entre les threads sera exclusivement réalisée à l’aide de variables conditions. Vous préciserez clairement les déclarations des variables globales le cas échéant.

Barème

- 
- 
- 
-