Sommaire

Synchronisation des ressources

1. Introduction

Les deux modifications suivantes clarifient les choses. Les collections concurrentes étudiées au chapitre précédent répondent (un peu) à ce problème. La collection maîtrise les accès à ses données en acceptant l’accès à l’information, par exemple, lorsque la phase d’ajout est terminée.

Mais si on accède à des structures habituelles qui ne sont pas « thread-safe », la donne est réellement différente. On ne sait d’ailleurs pas toujours ce qui se passe en mémoire, comme la mise en évidence suivante tente de l’expliquer.

2. Mise en évidence du caractère stochastique

L’idée est ici de démontrer le caractère stochastique de l’accès multithreadé d’une ressource : autant d’exécutions que de résultats. Cela met en évidence l’absence de maîtrise a priori et le besoin d’approfondir cette question.

Explication de la mise en évidence :

On a une variable entière initialisée à zéro. Un premier thread est lancé et cherche à incrémenter la valeur entière. Un second thread est lancé et cherche à décrémenter la valeur entière. À l’exécution, on s’aperçoit de la chose suivante : on voit que le traitement diffère ...