[interprocess] New snapshot in Boost Vault/CVS

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

Ion Gaztañaga wrote:
Hi to all,
Not sure if this is the same as the snapshot since I'm trying to use the CVS version. But I get this conflict, with vc8: ..\bin\ext\boost\interprocess\1.33.1\msvc-8.0\rsi.debug\architecture-x86\boost/interprocess/mapped_region.hpp(50) : error C2011: 'boost::interprocess::mapped_region' : 'class' type redefinition ..\bin\ext\boost\interprocess\1.33.1\msvc-8.0\rsi.debug\architecture-x86\boost/interprocess/memory_mappable.hpp(107) : see declaration of 'boost::interprocess::mapped_region' And others, related to the above. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo

Hi, Rene Rivera wrote:
Ion Gaztañaga wrote:
Hi to all,
Not sure if this is the same as the snapshot since I'm trying to use the CVS version. But I get this conflict, with vc8:
..\bin\ext\boost\interprocess\1.33.1\msvc-8.0\rsi.debug\architecture-x86\boost/interprocess/mapped_region.hpp(50) : error C2011: 'boost::interprocess::mapped_region' : 'class' type redefinition
Seems like you are including memory_mappable.hpp and mapped_region.hpp at the same time, but I should have removed memory mappable.hpp from the CVS since it's not longer needed and mapped_region definition passed to mapped_region.hpp. I've just removed some unused files from CVS. Thanks for the bug report. Can you try it again changing your includes from memory_mappable.hpp to mapped_region.hpp? Regards, Ion

Ion Gaztañaga wrote:
Hi,
Rene Rivera wrote:
Ion Gaztañaga wrote:
Hi to all, Not sure if this is the same as the snapshot since I'm trying to use the CVS version. But I get this conflict, with vc8:
..\bin\ext\boost\interprocess\1.33.1\msvc-8.0\rsi.debug\architecture-x86\boost/interprocess/mapped_region.hpp(50) : error C2011: 'boost::interprocess::mapped_region' : 'class' type redefinition
Seems like you are including memory_mappable.hpp and mapped_region.hpp
I was including neither. The includes I had, from a rather older version which I'm finally transitioning to the interprocess version of code included: #include <boost/interprocess/ipc/message_queue.hpp> #include <boost/interprocess/sync/named_mutex.hpp> #include <boost/interprocess/shared_memory_object.hpp> #include <boost/interprocess/indexes/map_index.hpp> And my test file also included: #include <boost/interprocess/shared_memory.hpp> But you just removed that one. And now I get a bunch of other compile errors...
Can you try it again changing your includes from memory_mappable.hpp to mapped_region.hpp?
Not possible ;-) But I will try and get the rest of my code working again. Will take a some time to figure out what I need to change to go from shmem=>interprocess. So no holding of breath is recommended :-) -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo
participants (2)
-
Ion Gaztañaga
-
Rene Rivera