2010-11-29 4 views
4

En programmation simultanée, quelles sont les différences et les points communs (s'il y en a) entre une course et une serrure ? Une réponse détaillée serait appréciée;).Différence entre une course et un blocage

+0

jetez un coup d'œil à [cette question SO] (http://stackoverflow.com/questions/3130079/difference-between-racearound-condition-and-deadlock). c'est vif. – 0xa6a

Répondre

8

Jetez un oeil à Description of race conditions and deadlocks

Race Conditions

Une condition de course se produit lorsque deux threads accéder à une variable partagée à en même temps. Le premier thread lit la variable et le deuxième thread lit la même valeur à partir de la variable . Ensuite, le premier thread et deuxième thread effectuent leurs opérations sur la valeur, et ils font la course pour voir ce thread peut écrire la valeur dernière à la variable partagée. La valeur de le thread qui écrit sa valeur est conservé, car le thread est écrit sur la valeur que le thread précédent a écrit.

Deadlocks

Un blocage se produit lorsque deux threads verrouiller chacun une variable différente au même temps et ensuite essayer de verrouiller la variable que l'autre fil déjà verrouillé. Par conséquent, chaque thread s'arrête en cours d'exécution et attend l'autre thread pour libérer la variable. Étant donné que chaque thread contient la variable que l'autre thread veut, rien ne se produit et les threads restent dans l'impasse.

Questions connexes