Les concepts de ressource partagée et de section critique Tâche asynchrone:ressource partagée Tâche asynchrone:section critique

Dans un contexte multithread, il arrive très souvent qu’un objet soit référencé en même temps dans plusieurs threads, en général le thread appelant et le thread exécutant. C’est une ressource partagée.

Si les deux threads tentent d’accéder à cet objet en même temps, une exception de type EAccessViolation est levée. Pour éviter ce phénomène, on protégera l’accès à cette ressource partagée par une section critique.

La section critique est un objet TCriticalSection qui autorise lors de son utilisation l’exécution d’une portion de code à un seul thread et place en attente le ou les autres threads voulant exécuter cette portion de code.

Les méthodes utilisées pour protéger le code sont :

  • procedure Acquire; : indique le début de la portion de code à protéger.

  • procedure Release; : indique la fin de la portion de code à protéger.

Voici un exemple d’implémentation :

Dans notre cas, il suffit de protéger l’accès à la propriété par une section critique. Du côté de la classe TComputeThread, on doit donc :

1) Introduire un objet TCriticalSection dans la classe...

Pour consulter la suite, découvrez le livre suivant :
couv_RIDELPH.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Thread persistant
Suivant
Une liste thread safe, l'interface d'échange privilégiée entre deux threads