he WriterGuard is used to remove volatileness and simultaneously gain access
to the entire interface of the shared object. It performs exclusive locking of
the mutex exposed by the shared object.
The following is the public interface of the WriterGuard.
template <class X,class Mutex>
class
WriterGuard
{
public:
explicit
WriterGuard( volatile X& x );
explicit
WriterGuard( volatile X* x );
WriterGuard(
volatile X& x, volatile const Mutex& mutex );
WriterGuard(
volatile X* x, volatile const Mutex& mutex );
~WriterGuard();
Mutex&
mutex() const;
X*
operator->();
X&
operator*();
X*
ptr() const;
};
All constructors throw boost::thread_resource_error. All other functions do
not throw.
See the section (
Preventing race
condition section
) for an example.
|