Boost logo

Boost :

Subject: Re: [boost] [thread] Can Boost.Thread use Boost.Atomic without falling on a compatibility issue?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2013-01-13 15:04:50


On Sun, Jan 13, 2013 at 11:44 PM, Andrey Semashev
<andrey.semashev_at_[hidden]> wrote:
> On Sun, Jan 13, 2013 at 11:15 PM, Vicente J. Botet Escriba
> <vicente.botet_at_[hidden]> wrote:
>>
>> I believed it also but the mutex shouldn't be locked while doing
>> notifications, only when you change the condition and when you wait for the
>> condition to be notified.
>
> Looking at the code now it seems there is a potential race condition.
> The commit or rollback can set the flag and issue the broadcast just
> before the enter method acquires the lock and blocks in the cv.
>
> I suppose there should be a second check for the flag value under the
> lock in the enter_once_region method. The locks in commit and rollback
> functions can be removed altogether then.

I attached the updated once.cpp.




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