Boost logo

Boost Users :

Subject: Re: [Boost-users] How to use lock_guard
From: Oliver Seiler (oseiler_at_[hidden])
Date: 2009-03-17 13:29:48


On Tue, Mar 10, 2009 at 8:51 AM, Roman Perepelitsa
<roman.perepelitsa_at_[hidden]> wrote:
> [...]
> You should not manually call destructors of automatic (stack allocated)
> objects. It's an Undefined Behavior and in practice it usually causes
> destructor to be called twice. You might want to put lock_guard in
> additional scope.
>
> {
>   boost::lock_guard<boost::mutex> lock(_mut);
>   // Data received from RS232
>   _device.GetData(_buffer);
>   // .... CODE ....
> }  // Destructor of lock is called here.
> signal_OnData(); }

Or use unique_lock or scoped_lock:

boost::mutex::scoped_lock lock(_mut);
....
lock.unlock();
signal_OnData();


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