cz.vutbr.fit.healing
Class HealingSemaphore

java.lang.Object
  extended by cz.vutbr.fit.healing.Healing
      extended by cz.vutbr.fit.healing.HealingSemaphore

 class HealingSemaphore
extends Healing

Healing method which uses a new semaphore to guard the variable. Semaphore simulates a lock but without an ownership problem. Semaphore can be released by a different thread than the one who obtained the semaphore. A lock is obtained every time the variable is accessed. The healing is based on the idea that lock is not released within the critical sections which should be done atomicaly.

Author:
zdenek

Constructor Summary
HealingSemaphore()
           
 
Method Summary
protected  void afterNormalAccess(RDVariable rdv, RDThread rdt)
          Called after normal access to the variable.
protected  void beforeNormalAccess(RDVariable rdv, RDThread rdt)
          Called before normal access to the variable.
protected  void enterCriticSection(RDVariable rdv, RDThread rdt)
          Called before enter the critical section.
protected  void leaveCriticSection(RDVariable rdv, RDThread rdt)
          Called after exit the critical section.
 
Methods inherited from class cz.vutbr.fit.healing.Healing
endHealing, finalHealing, getHealingMethod, initHealing, isHealedVariable, startHealing
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HealingSemaphore

HealingSemaphore()
Method Detail

enterCriticSection

protected void enterCriticSection(RDVariable rdv,
                                  RDThread rdt)
Called before enter the critical section.

Specified by:
enterCriticSection in class Healing
Parameters:
rdv - critical variable

leaveCriticSection

protected void leaveCriticSection(RDVariable rdv,
                                  RDThread rdt)
Called after exit the critical section.

Specified by:
leaveCriticSection in class Healing
Parameters:
rdv - critical variable

beforeNormalAccess

protected void beforeNormalAccess(RDVariable rdv,
                                  RDThread rdt)
Called before normal access to the variable.

Specified by:
beforeNormalAccess in class Healing
Parameters:
rdv - critical variable

afterNormalAccess

protected void afterNormalAccess(RDVariable rdv,
                                 RDThread rdt)
Called after normal access to the variable.

Specified by:
afterNormalAccess in class Healing
Parameters:
rdv - critical variable