Boost logo

Boost :

Subject: Re: [boost] [move] Library uploaded to sandbox
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2009-02-18 07:57:20


----- Original Message -----
From: "Ion Gaztañaga" <igaztanaga_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Tuesday, February 17, 2009 11:00 PM
Subject: [boost] [move] Library uploaded to sandbox

>
> Hi to all,
>
> I've uploaded a new version of the move emulation library to sandbox.
> I've put it temporarily in "move_semantics" folder to avoid overwriting
> current move code.
<snip>

> I've invested some precious time in the library and testing different
> approaches to see if it plays well with containers but I would like to
> hear some comments on whether the direction is acceptable and if I
> should spend more time on it. If someone else with more time wants to
> continue the library, please do it! ;-)

Hi,

The test for the move library and the intrusive constainers pass on gcc-3.4.4 under cygwin, but I have some trouble chile compiling interprocess. I had no problems while compiling the 1.38.0.

It seems that the fact to declare the variable m_nOwner interprocess_recursive_mutex.hpp volatile break on this compiler.

   volatile detail::OS_systemwide_thread_id_t m_nOwner;

On 1.38.0
   detail::OS_systemwide_thread_id_t m_nOwner;

        detail::OS_systemwide_thread_id_t th_id = detail::get_current_systemwide_thread_id();
43 if(detail::equal_systemwide_thread_id(th_id, m_nOwner)){

The move semantincs one
   volatile detail::OS_systemwide_thread_id_t m_nOwner;

        const detail::OS_systemwide_thread_id_t thr_id = detail::get_current_systemwide_thread_id();
42 const detail::OS_systemwide_thread_id_t old_id = m_nOwner;
        if(detail::equal_systemwide_thread_id(thr_id , old_id)){

Any ideas?

Best,
Vicente

_______________

gcc.compile.c++ ../../../bin.v2/libs/interprocess/test/flat_tree_test.test/gcc-3.4.4/debug/threading-multi/flat_tree_test.o

    "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -mthreads -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -I"../../.." -I"/home/Vicente/boost/boost_1_38_0" -I"/home/Vicente/boost/sandbox/boost.move_semantics" -c -o "C:\cygwin\home\Vicente\boost\sandbox\boost.move_semantics\bin.v2\libs\interprocess\test\flat_tree_test.test\gcc-3.4.4\debug\threading-multi\flat_tree_test.o" "flat_tree_test.cpp"

In file included from ../../../boost/interprocess/sync/interprocess_recursive_mutex.hpp:122,
                 from ../../../boost/interprocess/sync/mutex_family.hpp:22,
                 from ../../../boost/interprocess/detail/managed_memory_impl.hpp:23,
                 from ../../../boost/interprocess/managed_shared_memory.hpp:21,
                 from flat_tree_test.cpp:13:
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `void boost::interprocess::interprocess_recursive_mutex::lock()':
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:43: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)'
../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&)
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:53: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `bool boost::interprocess::interprocess_recursive_mutex::try_lock()':
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:61: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)'
../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&)
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:71: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `bool boost::interprocess::interprocess_recursive_mutex::timed_lock(const boost::posix_time::ptime&)':
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:85: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)'
../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&)
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:95: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp: In member function `void boost::interprocess::interprocess_recursive_mutex::unlock()':
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:104: error: no matching function for call to `boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(volatile boost::interprocess::detail::OS_systemwide_thread_id_t&)'
../../../boost/interprocess/detail/os_thread_functions.hpp:81: note: candidates are: boost::interprocess::detail::OS_systemwide_thread_id_t::OS_systemwide_thread_id_t(const boost::interprocess::detail::OS_systemwide_thread_id_t&)
../../../boost/interprocess/sync/emulation/interprocess_recursive_mutex.hpp:110: error: passing `volatile boost::interprocess::detail::OS_systemwide_thread_id_t' as `this' argument of `boost::interprocess::detail::OS_systemwide_thread_id_t& boost::interprocess::detail::OS_systemwide_thread_id_t::operator=(const boost::interprocess::detail::OS_systemwide_thread_id_t&)' discards qualifiers
...failed gcc.compile.c++ ../../../bin.v2/libs/interprocess/test/flat_tree_test.test/gcc-3.4.4/debug/threading-multi/flat_tree_test.o...
...failed updating 1 target...


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk