
2009/3/10 Daniele Barzotti
Hi,
I'm tring to use lock_guard, but I have some doubts...
I have a method called OnDataReceived() which is called by another class through a signal.
void ATDispatcher::OnDataReceived() { boost::lock_guardboost::mutex lock(_mut);
// Data received from RS232 _device.GetData(_buffer);
// .... CODE ....
// unlock the mutex before notifications lock.~lock_guard();
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_guardboost::mutex lock(_mut); // Data received from RS232 _device.GetData(_buffer); // .... CODE .... } // Destructor of lock is called here. signal_OnData(); } Roman Perepelitsa.