org.objectweb.perseus.concurrency.pessimistic
Class RWFifoLock

java.lang.Object
  extended byorg.objectweb.perseus.concurrency.pessimistic.Lock
      extended byorg.objectweb.perseus.concurrency.pessimistic.RWFifoLock

public final class RWFifoLock
extends Lock

A lock associated to an oid (see the "locks" map within the pessimistic concurrency manager). Provides "one writer/multiple readers" concurrency policy with a FIFO scheduling.

Author:
E. Bruneton, P. Dechamboux, S.Chassande-Barrioz

Field Summary
protected static LockValue LOCKS
           
protected  Semaphore semaphore
           
 
Fields inherited from class org.objectweb.perseus.concurrency.pessimistic.Lock
dg, hints, logger, oid, reservations
 
Constructor Summary
RWFifoLock()
           
RWFifoLock(java.lang.Object hints, DependencyGraph dg)
           
 
Method Summary
 boolean close(java.lang.Object task)
          Removes the given context from the reader and writer lists of this lock.
 byte getMax()
           
 void readIntention(java.lang.Object task)
          Acquires this lock in read mode for the given context.
 void writeIntention(java.lang.Object task)
          Acquires this lock in write mode for the given context.
 
Methods inherited from class org.objectweb.perseus.concurrency.pessimistic.Lock
reserve
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOCKS

protected static final LockValue LOCKS

semaphore

protected final Semaphore semaphore
Constructor Detail

RWFifoLock

public RWFifoLock()

RWFifoLock

public RWFifoLock(java.lang.Object hints,
                  DependencyGraph dg)
Method Detail

readIntention

public void readIntention(java.lang.Object task)
                   throws ConcurrencyException
Acquires this lock in read mode for the given context. This method blocks until the lock can be acquired in read mode by this context.

Specified by:
readIntention in class Lock
Parameters:
task - a context.
Throws:
ConcurrencyException

writeIntention

public void writeIntention(java.lang.Object task)
                    throws ConcurrencyException
Acquires this lock in write mode for the given context. This method blocks until the lock can be acquired in write mode by this context.

Specified by:
writeIntention in class Lock
Parameters:
task - a context.
Throws:
ConcurrencyException

close

public boolean close(java.lang.Object task)
Removes the given context from the reader and writer lists of this lock.

Specified by:
close in class Lock
Parameters:
task - a context
Returns:
true if the reader and writer list are empty, after the context has been removed from these lists. In such a case, this object can be removed from the 'locks' map.

getMax

public byte getMax()
Specified by:
getMax in class Lock


Copyright © 2000-2002 France Telecom S.A., INRIA, IMAG-LSR All Rights Reserved.