In summary, one aspect of the present invention is directed to a method
for a shared memory queue to support communicating between computer
processes, such as an enqueuing process and a dequeuing process. A buffer
may be allocated including at least one element having a data field and a
reserve field, a head pointer and a tail pointer. The enqueuing process
may enqueue a communication into the buffer using mutual exclusive access
to the element identified by the head pointer. The dequeuing process may
dequeue a communication from the buffer using mutual exclusive access to
the element identified by the tail pointer. Mutual exclusive access to
said head pointer and tail pointer is not required. A system and computer
program for a shared memory queue are also disclosed.