About the library:
The Shmem Library simplifies the use of shared memory and provides
some STL compatible allocators that allow shared memory STL container
placement. It also offers helper classes, such as offset pointers,
process shared mutexes, condition variables, and named semaphores.
Library users can apply all STL algorithms and utilities with created
shared memory objects. Shmem also wants to present a portable
implementation, unifying UNIX and Windows shared memory object
creation, providing simple wrapper classes.
Shmem offers the following to the user:
- Portable synchronization primitives for shared memory, including
shared mutexes and shared condition variables.
- Dynamic allocation of portions of a shared memory segment.
- Named allocation in shared memory. Shmem can create objects in
shared memory and associate it with a c-string offering a similar
mechanism to a named new/delete. Created object can be found by other
processes using Shmem framework.
- Offset pointers that can be safely placed in shared memory to point
to another object of the same shared memory segment even if the memory
is mapped to a different address.
- STL compatible shared memory allocators so that STL containers can
be placed in shared memory. Shmem also offers a pooled node allocator
to save and optimize shared memory allocation in node containers.
- STL compatible containers for systems with STL implementations that
cannot deal with shared memory. The user can map shared memory to
different addresses and use STL compatible containers and algorithms.
Useful to store common data or implement shared memory databases.
These containers also show how STL compatible containers can make use
of shared memory STL compatible allocators to place such containers in
the shared memory. Shmem also offers the basic_string pseudo-container
to use full-powered C++ strings in shared memory.
Please always state in your review, whether you think the library should be
accepted as a Boost library!
Additionally please consider giving feedback on the following general
- What is your evaluation of the design?
- What is your evaluation of the implementation?
- What is your evaluation of the documentation?
- What is your evaluation of the potential usefulness of the library?
- Did you try to use the library? With what compiler? Did you have any
- How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?
- Are you knowledgeable about the problem domain?