|
Boost : |
From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2006-10-15 10:23:39
Hi to all,
I've just uploaded a new Interprocess version. It's an ABI/Source
breaking release that is a bit experimental, because the library has
suffered many implementation changes:
* Implemented N1780 proposal to LWG issue 233: Insertion hints in
associative containers in interprocess boost::interprocess::multiset
and boost::interprocess::multimap class.
* Source breaking: A shared memory object is now used including
shared_memory_object.hpp header instead of shared memory.hpp.
* ABI breaking: Changed global mutex when initializing managed shared
memory and memory mapped files. This change tries to minimize deadlocks.
[Note: This feature is experimental, and tries to avoid global
Inteprocess deadlock when a process crashes holding the global lock.
Now, the shared memory/memory mapped file contents are used to
synchronize processes. Not sure if this change will be a step forward
but, I need to know if users find it better than the old, global lock
approach]
* Source breaking: Changed shared memory, memory mapped files and mapped
region's open mode to a single boost::interprocess::mode_t type.
* Added extra WIN32_LEAN_AND_MEAN before including DateTime headers to
avoid socket redefinition errors when using Interprocess and Asio in
windows.
* ABI breaking: mapped_region constructor no longer requires classes
derived from memory_mappable, but classes that match the MemoryMappable
concept (interface).
* Added in-place reallocation capabilities to basic_string.
* ABI breaking: Reimplemented and optimized small string optimization.
The narrow string class has zero byte overhead with an internal 11 byte
buffer in 32 systems!
* Added move semantics to containers. Experimental and not documented
yet. Improves performance when using containers of containers.
* ABI breaking: End nodes of node containers (list, slist, map/set) are
now embedded in the containers instead of allocated using the allocator.
This allows no-throw move-constructors and improves performance.
* ABI breaking: slist and list containers now have constant-time size()
function. The size of the container is added as a member.
Future work:
-> I'm now working in Intrusive containers, adding non-raw pointer
support. I want to base my container implementations in Intrusive, so I
plan to pass Interprocess containers code to Intrusive code. My goal is
to make sure that with Intrusive, everyone can construct containers easily.
-> I plan to optimize tree containers embedding red/black bit in the
parent pointer, to reduce the overhead of a node from 4 words to 3
words. I want to make this possible also with smart pointers.
-> I want to use Intrusive containers to program more efficient memory
allocation algorithms and name-object indexes.
-> Implementation of process-shared sharable_mutex and convertible_mutex
classes from N2094.
-> Bug fixes.
Regards,
Ion
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk