8
votes

Quelle est la section critique dans le threading?

S'il vous plaît quelqu'un peut-il me dire brièvement avec l'exemple de quoi les moyens de la section critique? En langage simple


2 commentaires

Dupe possible: Stackoverflow.com/questions/419145/...


S'il vous plaît ne lmgtfy pas, c'est impoli.


4 Réponses :


10
votes

A section critique est une section de code qui doit être exécutée sans interférence extérieure - c'est-à-dire Sans un autre fil affectant / étant affecté par des états "intermédiaires" dans la section.

Par exemple, un système de réservation peut avoir une section critique lors de la réservation de quelque chose en ce que cela doit vérifier à la fois si l'article est disponible, puis le marquez comme non disponible, sans autre tentative de réservation de la pièce qui change statut au milieu.

Ainsi, la section critique d'un morceau de code est un lieu où un seul fil d'exécution est autorisé à être à la fois, pour empêcher les choses comme des conditions de course.


0 commentaires

0
votes

Une section critique enveloppe cette partie de votre code lorsque des données partagées sont modifiées. Le moniteur garantit qu'un seul fil à la fois entre.


0 commentaires

0
votes

Une routine de section critique est une approche du problème de deux programmes ou plus de concurrence pour la même ressource en même temps. Imaginez que deux programmes veulent incrémenter un comptoir. Si les deux le font en même temps: récupérez l'opérande, incrémentez-la et stockez la valeur incrémentée, l'un des incréments sera perdu. Sur les processeurs d'aujourd'hui, les programmes peuvent utiliser une instruction atomique en lecture-modification-écriture, telle que Fetch-and-op, comparer-et-échange ou échange. Sur les premiers transformateurs, ces instructions n'existaient pas; Le problème était d'accomplir l'incrémentation atomique, en utilisant uniquement des instructions d'assembleur ordinaires. Le problème a été défini et résolu d'abord par Edsgar Dijkstra. "La routine de section critique" était son nom pour le code qui a résolu le problème.


0 commentaires

2
votes

Une section critique est une section du code où si plusieurs threads devaient le faire à la fois, ils pourraient interférer les uns avec les autres sont tellement pour provoquer un résultat incorrect ou un autre dysfonctionnement. Imaginez une simple routine de banque pour traiter un chèque:

setBalance( John, balance - amount );    // now balance is $10,999.99!!! :)


0 commentaires