Re: [boost] problems with recursive_timed_mutex and scoped lock wont compile in version 1.39

did you find a solution for this compilation errror ? regards Clark Sims-2 wrote:
I can compile the following code fine in boost 1.33.1 but it generates compiler errors in version 1.39. I am using visual studio 2005.
I will post the code, and then post the compiler errors:
#include <iostream> #include <boost/thread/thread.hpp> #include <boost/thread/xtime.hpp> #include <boost/thread/recursive_mutex.hpp>
using namespace std; //using namespace boost; using boost::mutex; using boost::thread; using boost::recursive_timed_mutex; using boost::xtime;
boost::recursive_timed_mutex hello_mutex;
void hello( int thread_id, int iter) { cerr << thread_id << " : " << iter << endl; }
void rand_xtime( xtime* xt) { xtime_get( xt, boost::TIME_UTC); //xt.nsec += (rand() % 1000000000); xt->sec += 1 + rand()%5; }
void say_hello( int thread_id) { for (int iter=0; iter<5; iter++) { xtime xt; rand_xtime( &xt); thread::sleep(xt); rand_xtime( &xt); { recursive_timed_mutex &refer_hello = hello_mutex; const xtime& refer_xt = xt; recursive_timed_mutex::scoped_timed_lock lock1( refer_hello, refer_xt); if (lock1) { hello( thread_id, iter); } } } }
void hello1() { say_hello( 1); }
void hello2() { say_hello( 2); }
int main() { boost::thread thrd1(hello1); boost::thread thrd2(hello2);
thrd1.join(); thrd2.join();
return 0; }
Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved.
Warning: cannot find Makefile.TimedMutex.dep cl.exe /nologo /Ob0 /W3 /EHs /MD /GR /I ".." /D NDEBUG /D WIN32 /D _CONSOLE /FD /c /Fo"Release\TimedMutex\I386\TimedMutex.obj" "TimedMutex.cpp" TimedMutex.cpp c:\boost_1_39\boost\thread\win32\basic_recursive_mutex.hpp(64) : error C2679: binary '+' : no operator found which takes a right-hand operand of type 'const boost::xtime' (or there is no acceptable conversion)
c:\boost_1_39\boost/date_time/posix_time/date_duration_operators.hpp(31): could be 'boost::posix_time::ptime boost::posix_time::operator +(const boost::posix_time::ptime &,const boost::gregorian::months &)' [found using argument-dependent lookup] c:\boost_1_39\boost/date_time/date_duration_types.hpp(132): or 'boost::gregorian::date boost::date_time::months_duration<base_config>::operator +(const boost::gregorian::date &,const boost::date_time::months_duration<base_config> &)' [found using argument-dependent lookup] with [ base_config=boost::gregorian::greg_durations_config ]
c:\boost_1_39\boost/date_time/posix_time/date_duration_operators.hpp(75): or 'boost::posix_time::ptime boost::posix_time::operator +(const boost::posix_time::ptime &,const boost::gregorian::years &)' [found using argument-dependent lookup] c:\boost_1_39\boost/date_time/date_duration_types.hpp(244): or 'boost::gregorian::date boost::date_time::years_duration<base_config>::operator +(const boost::gregorian::date &,const boost::date_time::years_duration<base_config> &)' [found using argument-dependent lookup] with [ base_config=boost::gregorian::greg_durations_config ] c:\boost_1_39\boost/date_time/time.hpp(139): or 'boost::posix_time::ptime boost::date_time::base_time<T,time_system>::operator +(const boost::gregorian::date_duration &) const' with [ T=boost::posix_time::ptime, time_system=boost::posix_time::posix_time_system ] c:\boost_1_39\boost/date_time/time.hpp(159): or 'boost::posix_time::ptime boost::date_time::base_time<T,time_system>::operator +(const boost::posix_time::time_duration &) const' with [ T=boost::posix_time::ptime, time_system=boost::posix_time::posix_time_system ] while trying to match the argument list '(boost::system_time, const boost::xtime)' c:\boost_1_39\boost/thread/locks.hpp(364) : see reference to function template instantiation 'bool boost::detail::basic_recursive_mutex_impl<underlying_mutex_type>::timed_lock<boost::xtime>(const Duration &)' being compiled with [ underlying_mutex_type=boost::detail::basic_timed_mutex, Duration=boost::xtime ] c:\boost_1_39\boost/thread/locks.hpp(363) : while compiling class template member function 'bool boost::unique_lock<Mutex>::timed_lock(const boost::xtime &)' with [ Mutex=boost::recursive_timed_mutex ] TimedMutex.cpp(36) : see reference to class template instantiation 'boost::unique_lock<Mutex>' being compiled with [ Mutex=boost::recursive_timed_mutex ] NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.exe"' : return code '0x2' Stop.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- View this message in context: http://old.nabble.com/problems-with-recursive_timed_mutex-and-scoped-lock-wo... Sent from the Boost - Dev mailing list archive at Nabble.com.
participants (1)
-
amillet