Boost logo

Boost Users :

From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2006-06-10 16:21:23


Hi to all,

  I've just uploaded to Boost Vault a new Shmem bugfix version (0.93)
with bugfixes to make Shmem MinGw friendly (props to Jan Stetka).

Library and documentation download:

http://boost-consulting.com/vault/index.php?&direction=0&order=&directory=Memory

Online documentation:

http://ice.prohosting.com/newfunk/boost/libs/shmem/

////////////////////////////////////////////////////////////

Update on Interprocess:

-> Due to Shmem problems with shared memory/named mutex/name semaphore
lifetime between POSIX/Windows. I've decided to change Shmem approach
(emulation of Windows lifetime behavior in POSIX with reference
counting) to a POSIX lifetime (explicit unlinking shared memory).

This means that I have to rework all main classes to achieve POSIX
persistence semantics in Windows even when a process crashes. This will
require using memory mapped files to emulate shared memory (with some
tricks to avoid performance problems with file-memory synchronization if
it's possible). I think that this approach will be much more portable
than the Shmem approach.

-> I'm also experimenting with a new allocator with expand-in place
capabilities to allow realloc-like features in shared memory containers.
The first results are encouraging both in size savings and speed
improvements. This expand in place features are based on a paper I plan
to present as a ISO C++ proposal based on N1953. You can find the
current draft here, if you want to make some comments:

http://ice.prohosting.com/newfunk/proposals/nXXXX%20Improving%20STL%20Allocators.html

-> I'm also experimenting with a new reduced mutex interface (basically
condensing shared_mutex, shared_try_mutex and shared_timed_mutex in a
single interprocess_mutex type. Something in the line of the draft
"Simplifying And Extending Mutex and Scoped Lock Types For C++
Multi-Threading Library" that you can find here:

http://ice.prohosting.com/newfunk/proposals/

I'm also trying to implement a process-shared version of Howard
Hinnant's upgradable_mutex class described here:

http://home.twcny.rr.com/hinnant/cpp_extensions/rw_perf.html
http://home.twcny.rr.com/hinnant/cpp_extensions/threads_move.html

I still have some bugs in my upgradable_mutex implementation that I plan
to solve soon. I think that this enhazed rw mutex is a winner for
Interprocess.

-> I'm adding a new mutex type: file_lock. The classic UNIX fcntl /
Windows FileLockEx file locking is an interesting addition to
Interprocess since both in POSIX and Windows, the lock is automatically
unlocked by the OS when the process ends/crashes. This can help
problematic Shmem atomic creation+initialization functions if the
process crashes executing the atomic code. File locking is also many
times easier to use than named mutexes or shared memory + process shared
mutexes, specially for simple locking.

That's all. Thanks for your patience!

Regards,

Ion


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net