| 
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectjavax.realtime.WaitFreeReadQueue
A queue that can be non-blocking for consumers.
 The WaitFreeReadQueue class is intended for single-reader 
    multiple-writer communication, although it may also be used (with care) 
    for multiple readers.  A reader is generally an instance of 
    NoHeapRealtimeThread, 
    and the writers are generally regular Java 
    threads or heap-using real-time threads or schedulable objects.  
  Communication is through a 
    bounded buffer of Objects that is managed first-in-first-out.  The 
    principal methods for this class are write and read 
 
write method appends a new element onto the queue.
 It is synchronized, and blocks when the queue is full.
 It may be called by more than one writer,
 in which case, the different callers will write to different
 elements of the queue.
 read method removes the oldest element from the queue.
 It is not synchronized and does not block;
 it will return null when the queue is empty. Multiple reader
 threads or schedulable objects are permitted, but if two or more intend to
 read from the same
 WaitFreeWriteQueue they will need to arrange explicit synchronization.
 waitForData() method on a queue that has
 been constructed with a notify parameter set to true.
 
 
 WaitFreeReadQueue is one of the classes allowing
 NoHeapRealtimeThreads and regular Java threads to synchronize on an object
 without the risk of a NoHeapRealtimeThread incurring Garbage Collector latency
 due to priority inversion avoidance management.
java.lang.IllegalAccessException,
 java.lang.ClassNotFoundException, and
 java.lang.InstantiationException.
 
| Constructor Summary | |
WaitFreeReadQueue(int maximum,
                  boolean notify)
Constructs a queue containing up to maximum elements in immortal memory.  | 
|
WaitFreeReadQueue(int maximum,
                  MemoryArea memory,
                  boolean notify)
Constructs a queue containing up to maximum elements in memory.  | 
|
WaitFreeReadQueue(java.lang.Runnable writer,
                  java.lang.Runnable reader,
                  int maximum,
                  MemoryArea memory)
Constructs a queue containing up to maximum elements in memory.  | 
|
WaitFreeReadQueue(java.lang.Runnable writer,
                  java.lang.Runnable reader,
                  int maximum,
                  MemoryArea memory,
                  boolean notify)
Constructs a queue containing up to maximum elements in memory.  | 
|
| Method Summary | |
 void | 
clear()
Sets this to empty.  | 
 boolean | 
isEmpty()
Queries the queue to determine if this is empty.  | 
 boolean | 
isFull()
Queries the system to determine if this is full.  | 
 java.lang.Object | 
read()
Reads the least recently inserted element from the queue and returns it as the result, unless the queue is empty.  | 
 int | 
size()
Queries the queue to determine the number of elements in this.  | 
 void | 
waitForData()
If this is empty block until a writer inserts an element.  | 
 void | 
write(java.lang.Object object)
A synchronized and blocking write.  | 
| Methods inherited from class java.lang.Object | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
public WaitFreeReadQueue(int maximum,
                         boolean notify)
read() 
 method and a synchronized and blocking write() method.Not currently implemented
maximum - The maximum number of elements in the queue.notify - A flag that establishes whether a reader is notified 
 when the queue becomes non-empty.
java.lang.IllegalArgumentException - Thrown if the maximum 
 argument is less than or equal to zero.
public WaitFreeReadQueue(java.lang.Runnable writer,
                         java.lang.Runnable reader,
                         int maximum,
                         MemoryArea memory,
                         boolean notify)
read() method and a 
 synchronized and blocking write() method.
 
 The writer and reader parameters, 
 if non-null, are checked to insure 
 that they are compatible with the 
 MemoryArea specified by memory (if 
 non-null.) If memory is null
 and both Runnable's are non-null, the constructor will 
 select the nearest common scoped parent memory area, or if there 
 is no such scope it will use immortal memory. If all three parameters 
 are null, the queue will be allocated in immortal memory.
 
 reader and writer
 are not necessarily the only threads or schedulable objects that will 
 access the queue; moreover, there is no check that they actually 
 access the queue at all.
Note: that the wait free queue's internal queue is allocated in memory, but the memory area of the wait free queue instance itself is determined by the current allocation context.
Not currently implemented
writer - An instance of Runnable or null.reader - An instance of Runnable or null.maximum - The maximum number of elements in the queue.memory - The 
 MemoryArea in which internal elements are allocated.notify - A flag that establishes whether a reader is notified 
 when the queue becomes non-empty.
java.lang.IllegalArgumentException - Thrown if an argument 
 holds an invalid value. The writer argument must be null, a 
 reference to a Thread, or a reference to a schedulable object 
 (a RealtimeThread, 
 or an 
 AsyncEventHandler.) The reader argument must be 
 null, a reference to a Thread, or a reference to a 
 schedulable object. The maximum argument must be greater than zero.
InnaccessibleAreaException - Thrown if memory is a scoped memory 
 that is not on the caller's scope stack.
MemoryScopeException - Thrown if either reader or 
 writer is non-null 
 and the memory argument is not compatible with reader and 
 writer with respect to the assignment and access rules for memory areas.
public WaitFreeReadQueue(java.lang.Runnable writer,
                         java.lang.Runnable reader,
                         int maximum,
                         MemoryArea memory)
read() method and a synchronized 
 and blocking write() method.
 
 The writer and reader parameters, if non-null, 
 are checked to insure 
 that they are compatible with the MemoryArea specified by memory (if 
 non-null.) If memory is null and both Runnable's are 
 non-null, the 
 constructor will select the nearest common scoped parent memory area, 
 or if there is no such scope it will use immortal memory. If all three 
 parameters are null, the queue will be allocated in immortal memory.
 
 reader and writer are not necessarily the 
 only threads or schedulable objects that will access the queue; 
 moreover, there is no check that they actually access the queue at all.
Note: that the wait free queue's internal queue is allocated in memory, but the memory area of the wait free queue instance itself is determined by the current allocation context.
Not currently implemented
writer - An instance of Runnable or null.reader - Runnablemaximum - The maximum number of elements in the queue.memory - The MemoryArea 
 in which this object and internal elements are allocated.
java.lang.IllegalArgumentException - Thrown if an argument 
 holds an invalid value. The writer argument must be 
 null, a reference 
 to a Thread, or a reference to a schedulable object (a 
 RealtimeThread, 
 or an 
 AsyncEventHandler.) The reader argument must be 
 null, a reference 
 to a Thread, or a reference to a schedulable object. The maximum 
 argument must be greater than zero.
MemoryScopeException - Thrown if either 
 reader or writer is 
 non-null and the memory argument is not compatible 
 with reader and writer with respect to the 
 assignment and access rules for memory areas.
 - HREF="InaccessibleAreaException.html">
 InaccessibleAreaException Thrown if memory is a scoped
 memory that is not on the caller's scope stack.
public WaitFreeReadQueue(int maximum,
                         MemoryArea memory,
                         boolean notify)
read() method and 
 a synchronized and blocking write() method.Note: that the wait free queue's internal queue is allocated in memory, but the memory area of the wait free queue instance itself is determined by the current allocation context.
Not currently implemented
maximum - The maximum number of elements in the queue.memory - The MemoryArea
 in which this object and internal elements are allocated.notify - A flag that establishes whether a reader is 
 notified when the queue becomes non-empty.
java.lang.IllegalArgumentException - Thrown if the maximum 
 argument is less than or equal to zero, or memory is null.| Method Detail | 
public void clear()
Not currently implemented
public boolean isEmpty()
Not currently implemented
public boolean isFull()
Note: This method needs to be used with care since the state of the queue may change while the method is in progress or after it has returned.
Not currently implemented
public java.lang.Object read()
null is returned.Not currently implemented
null if this is empty.public int size()
Note: This method needs to be used with care since the state of the queue may change while the method is in progress or after it has returned.
Not currently implemented
public void waitForData()
                 throws java.lang.InterruptedException
 
 Note: If there is a single reader and no asynchronous 
 invocation of clear, then it is safe to invoke read after 
 waitForData and know that read will find the queue non-empty.
Implementation note: To avoid reader and writer synchronizing on the same object, the reader should not be notified directly by a writer. (This is the issue that the non-wait queue classes are intended to solve).
Not currently implemented
java.lang.UnsupportedOperationException - Thrown if 
 this has not been constructed with notify set to true.
InterruptedException= - Thrown if the thread 
 is interrupted by interrupt() or 
 AsynchronouslyInterruptedException.fire()
 during the time between calling this method and returning from it.
java.lang.InterruptedException
public void write(java.lang.Object object)
           throws java.lang.InterruptedException
Not currently implemented
object - The java.lang.Object that is placed in the queue.
java.lang.InterruptedException - Thrown if the thread 
 is interrupted by interrupt() or 
 AsynchronouslyInterruptedException.fire()
 during the time between calling this method and returning from it.
MemoryScopeException - Thrown if a memory access error or 
 illegal assignment error would occur while storing object in the queue.
  | 
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||