• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 1 : Rappel de threads en C 1 Threads en C

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TP 1 : Rappel de threads en C 1 Threads en C"

Copied!
1
0
0

Texte intégral

(1)

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 1 : Rappel de threads en C

1 Threads en C

Unthreadest un processus l´eger, c’est-`a-dire un processus qui a sa pile d’ex´ecution, son contexte d’ex´ecution, et acc`es direct aux variables de sa port´ee.

En C, pour programmer avec des threads, il faut utiliser la librairie POSIX. En particulier pour ce TP il suffit de connaˆıtre la fonctionpthread create.

Dans les exercices ci-dessous on se propose d’observer le comportement concurrent de certains threads ´ecrit en C. Pour pouvoir observer des ex´ecutions diff´erentes on pourra utiliser de fa¸con intelligente la fonctionnanosleep, qui arrˆete temporairement l’ex´ecution d’un thread.

Exercice1:

Dans une premi`ere version, on s’int´eresse qu’`a la concurrence, pour observer l’entrelacement.

Ecrire deux threads qui affichent de fa¸´ con compl`etement ind´ependante les nombres de 1 `a 100.

Observer le comportement de votre programme.

Exercice2:

Dans une deuxi`eme version, on s’int´eresse ´egalement `a observer une possible interf´erence. ´ecrire deux threads qui incr´ementent chacun `a son tour une variable partag´ee, et qui ensuite affichent son contenu.

Observer le comportement de votre programme.

Exercice3:

Dans cet exercice on programmera un producteur et plusieurs consommateurs, pour ob- server l’absence d’exclusion mutuelle et la famine. On producteur v´erifie qu’un drapeau soit false,incr´emente une variable partag´ee, met `atruele drapeau et recommence du d´ebut. Chaque consommateur attend que le drapeau soit `a true, ensuite il affiche son nom (pass´e en param`etre

`

a la cr´eation) et le contenu de la variable, met le drapeau `a falseet recommence du d´ebut.

Observer le comportement de votre programme. Il faudra trouver un moyen d’observer l’absence d’exclusion mutuelle et la famine d’un des consommateur.

Exercice4:

Dans cet exercice on programmera des threads pour observer l’interblocage. Les deux threads ont acc`es `a deux drapeaux, x1 et x2. Le premier thread attend que x1 est true, et le mets `a false, ensuite attend que x2soit true et le mets `a false, et ensuite affiche un message, remet les drapeaux `a true et il recommence. Le deuxi`eme fait la mˆeme chose avec les deux drapeaux invers´es.

Trouvez le moyen d’observer l’interblocage (livelock).

Références

Documents relatifs

Dans ce Tp on impl´ ementera quelques algorithmes d’exclusion mutuelle sans utiliser les prim- itives de haut niveau comme les m´ ethodes synchronized ou les variables de

Le serveur stocke alors cette chaˆıne de caract` eres dans un objet de type ConcurrentBuffer Un client consommateur attend que le serveur lui envoie des chaˆınes de caract` eres qui

Le premier argument est l’adresse d’un descripteur de thread, le deuxi`eme argument (que nous mettrons toujours ` a NULL dans ces TP) est un attribut de thread de type pthread_attr_t

Dans cet exercice on souhaite mod´eliser ce probl`eme du dˆıner des philosophes par un programme en C dans leque chaque baguette sera repr´esent´ee par un verrou et chaque

Les paniers et les cabines seront repr´esent´es par deux s´emaphores semCabine et semPanier qui seront des champs de la classe Client (ces s´emaphores seront partag´es par tous

Supposez qu’on dispose d’une seule salle de bain qui peut ˆetre utilis´ee par des hommes ou des femmes mais pas au mˆeme moment.. Programmez en utilisant les s´emaphores une

Quand le probl`eme de trois elfes a ´et´e r´esolu, si d’autres elfes ont un probl`eme ils doivent attendre de pouvoir former ` a leur tour un groupe de trois personnes et attendre

La file FIFO devrait ˆ etre repr´ esent´ ee par une liste simplement chaˆın´ ee avec un pointeur top sur le d´ ebut de la liste (utilis´ e par les consommateurs pour commencer `