Registered by Vic Bancroft

  In general there seems to be a need to provide some buffering between processes, much in
  the fashion of the command line pipeline so useful in linux/UNIX shells. Some times it is
  not convenient to have a mechanism that allows buffering between processes that are not
  strictly synchronously invoked or executed. Namely, if one process constructs a shared
  memory area and populates it, whereby another process, some time later, can connect to
  that memory area and retrieve the information. Since one can construct queue operations
  that are properly synchronized, the calling processes can use the fast queues without
  special consideration for timing issues. As part of the implementation, two utilities
  should be provided, a producer and consumer, which can read from standard input and output
  streams and redirect those stream to and from the queue respectively. One approach to
  constructing fast queues would be to construct a mechanism for using appropriate shared
  memory containers.

 There are three main components of this work, the shared segment of memory, an allocator of memory chunks and the queue itself.

    * Segment : the shared memory class is a thin object implemented on the shmget() and shmat() calls [2]. Since an additional call to the function shmctl() is required to remove the segment (using the option IPC_RMID), queue persistence is obtained with lack of an action in the segment destructor.
    * Allocator : the shared allocator uses a sorted circular doubly linked list for free blocks and should try to merge contiguous blocks on free.
    * Queue : the queue is a template and can be used for basic FIFO operation.

Project information

Vic Bancroft
Not yet selected
Simplified BSD Licence

RDF metadata

View full history Series and milestones

trunk series is the current focus of development.

All code Code

Version control system:
Programming languages:

Get Involved

  • warning
    Report a bug
  • warning
    Ask a question
  • warning
    Help translate


Shared Memory Queue does not have any download files registered with Launchpad.