Hi all
In both:
boost/detail/spinlock_sync.hpp
boost/detail/smart_ptr/spinlock_sync.hpp
Spinlock does not has constructor, so it is possible to have spinlock::v_ uninitialized and not to equal zero.
That means it may be locked by default and call below will always return false...
bool try_lock()
{
int r = __sync_lock_test_and_set( &v_, 1 );
return r == 0;
}
Am I missing something?
Adding
Spinlock(): v_(0) {}
Looks like solves my issue.
g++ 4.1.2 on suse 2.6.16.46
Regards Vlad.