Fermer

mai 7, 2024

Faire fonctionner les threads ensemble – Synchronisation

Faire fonctionner les threads ensemble – Synchronisation


Imaginez une cuisine en Inde avec deux cuisiniers, Gautam et Badal. Ils préparent tous les deux de délicieux plats, mais ils souhaitent tous les deux utiliser une boîte à épices unique. Toutefois, un seul cuisinier peut l’utiliser à la fois.

Voici comment ils assurent une collaboration savoureuse :

Tâches diverses :

  • Gautam prépare du biryani et Badal prépare du curry. Les deux tâches nécessitent une boîte à épices spéciale.

Boîte à épices unique :

  • Il n’y a qu’une seule boîte à épices et ils doivent la partager.

Tours alternés :

  • Ils décident de se relayer. Si Gautam utilise la boîte à épices, Badal attend patiemment, et vice versa.

Communication efficace :

  • Gautam et Badal communiquent bien. Lorsque l’un a terminé, ils en informent l’autre, évitant ainsi tout chaos lié aux épices.

Cuisine Harmonieuse :

  • Cette approche synchronisée crée un festin sans surcharger la boîte à épices. C’est comme une danse coordonnée dans la cuisine animée des saveurs.

Ce scénario reflète la synchronisation des threads dans le monde de la programmation, en particulier avec les threads. Sujetscomme Gautam et Badal, travaillent ensemble, se relayant pour accéder aux ressources partagées et assurant un processus harmonieux.

Parlons de la façon dont les threads peuvent bien fonctionner ensemble en Python. C’est comme leur apprendre à travailler ensemble à tour de rôle sans causer de dégâts.

Connaissance de base de multithread fera de vous un apprenant rapide. En Python, il existe un module sympa appelé threading. C’est comme un kit de travail d’équipe pour votre code, permettant aux choses de fonctionner ensemble en douceur.

Parlons d’abord du tour de rôle

Le module de threading en Python dispose de quatre classes spéciales qui aident vos threads à jouer équitablement et à tour de rôle. C’est comme avoir des règles pour garantir que chacun ait la chance de faire son travail sans aucun chaos.

Verrouillage

C’est comme une clé que les threads utilisent pour accéder une à une à une ressource partagée. Il évite les conflits en permettant à un seul thread de détenir le verrou, garantissant ainsi l’exécution ordonnée des sections de code critiques.

Disons que Gautam utilise un couteau pour couper quelque chose, donc Badal doit attendre que Gautam lâche le couteau.

« Verrouillage« permet à un seul thread d’acquérir le verrou à la fois.

Si un thread détient le verrou et tente de l’acquérir à nouveau (acquisition imbriquée), il sera bloqué. En d’autres termes, cela ne permet pas au même thread d’acquérir le verrou plusieurs fois. C’est simple et adapté aux besoins de synchronisation de base.

RLock (verrouillage réentrant/récursif)

C’est un peu comme Lock et fonctionne comme une clé permettant au thread d’accéder à une ressource à la fois. La seule différence entre le même Lock et RLock is Il peut être acquis n fois et publié n fois par le même thread, mais pour le faire acquérir par un autre thread, le nombre d’acquisition et de libération doit être le même.

Le code suivant créera DeadLock Puisque le même verrou est acquis plusieurs fois par le même thread.

Exemple de verrouillage

Pour surmonter cela DeadLock la situation dans laquelle nous pouvons aller RLock

Rlock Impasse surmontée

Le RLock permettra au même verrou d’être acquis par le même thread et DeadLock la situation sera ignorée.

Sémaphore

Le sémaphore est utilisé pour limiter le nombre de threads pouvant accéder à une ressource en même temps. Fonctionne de la même manière que Lock

Sémaphore

Résumé

Les classes Lock, RLock et Semaphore vous permettent de faire fonctionner plus efficacement plusieurs threads sur la même ressource. Les trois classes contrôlent le comportement d’un thread sur les ressources et peuvent vous éviter les incohérences.

Site officiel https://pythonbricks.pythonanywhere.com/
Chaîne Youtube https://www.youtube.com/@PythonBricks
Télégramme https://t.me/pythonbricks

Regarder et apprendre: https://www.youtube.chttps://www.youtube.com/watch?v=Ke8gBPq9emsom

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link