|
Boost Users : |
Subject: Re: [Boost-users] [interprocess] Is there a bug in spinlock atomic implementations 1.39 and 1.40?
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-10-13 22:21:39
AMDG
Sakharuk, Vladimir wrote:
>> 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
>>
This behavior is intentional. boost::detail::spinlock is a POD type.
Also, in general you shouldn't use anything in a detail directory.
In Christ,
Steven Watanabe
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net