
Hello, I've played around with shmem library, and I was really impressed with it power, design and functionality. I definitely think this library should be accepted into boost.
- What is your evaluation of the design? In general - I liked it. It looks a bit complicated in some places, but I guess this is tradeoff played for its power. I've made several tests and found that library is easy enough to use, yet powerful enough to do what most people need for IPC communications.
One minor thing, I didn't particularly liked about design is that several method (for example shared_message_queue::receive) return values into variables passed by non-const reference. I don't like this approach - the resulting code is obscure because you can't see from that code, that variable is modified. I think of the the following approaches might result a better client code: 1) Return multiple values (i.e. by using std::pair, boost::tuple) 2) Modify parameters, but instead of passing by non-const reference - pass them by pointer. When pointer passed it immediately indicates that variable might be modified as opposite to non-const reference, which is a rare beast nowadays. If you think of foo(someVar) via foo(&someVar), the second hints about possibility of modifying someVar, while first one doesn't.
- What is your evaluation of the implementation? I did not looked into implementation.
- What is your evaluation of the documentation? The documentation is good and comprehensive. I likes a large number of small and explaining code examples.
Here, however, are the few glitches I've came by: 1) in file containers_explained.html "boost:shmem" written several times instead of "boost::shmem" 2) in file named_shared_object.html Document states that basic_named_shared_object::open in has 3 parameters while open in reality it has only two (no size is passed to open) 3) Most of the pages missing includes files needed for particular class/feature. It would be nice, if, for example, shared_message_queue.html would mention <boost/shmem/ipc/shared_message_queue.hpp>
- What is your evaluation of the potential usefulness of the library? Very useful. I've seen few libraries what tried to deal with the shared memory, but non got even close to level of functionality the shmem library provides.
- Did you try to use the library? With what compiler? Did you have any problems? I've tried using VC 7.1 and boost 1.33.1. I did compiled and run without a single problem.
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? I've read most of the documentation, and played around with library. Wrote few small programs to test some of the features, but didn't use in any large project.
- Are you knowledgeable about the problem domain? Moderate. I didn't work with IPC a lot, but deal with it from time to time.
And I would like to thank Ion GaztaƱaga for developing such a good library. Hope it will make its way to the proud family of boost libraries :)