| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H
- #define CPPUNIT_SYNCHRONIZEDOBJECT_H
- #include <cppunit/Portability.h>
- CPPUNIT_NS_BEGIN
- /*! \brief Base class for synchronized object.
- *
- * Synchronized object are object which members are used concurrently by mutiple
- * threads.
- *
- * This class define the class SynchronizationObject which must be subclassed
- * to implement an actual lock.
- *
- * Each instance of this class holds a pointer on a lock object.
- *
- * See src/msvc6/MfcSynchronizedObject.h for an example.
- */
- class CPPUNIT_API SynchronizedObject
- {
- public:
- /*! \brief Abstract synchronization object (mutex)
- */
- class SynchronizationObject
- {
- public:
- SynchronizationObject() {}
- virtual ~SynchronizationObject() {}
- virtual void lock() {}
- virtual void unlock() {}
- };
- /*! Constructs a SynchronizedObject object.
- */
- SynchronizedObject( SynchronizationObject *syncObject =0 );
- /// Destructor.
- virtual ~SynchronizedObject();
- protected:
- /*! \brief Locks a synchronization object in the current scope.
- */
- class ExclusiveZone
- {
- SynchronizationObject *m_syncObject;
- public:
- ExclusiveZone( SynchronizationObject *syncObject )
- : m_syncObject( syncObject )
- {
- m_syncObject->lock();
- }
- ~ExclusiveZone()
- {
- m_syncObject->unlock ();
- }
- };
- virtual void setSynchronizationObject( SynchronizationObject *syncObject );
- protected:
- SynchronizationObject *m_syncObject;
- private:
- /// Prevents the use of the copy constructor.
- SynchronizedObject( const SynchronizedObject © );
- /// Prevents the use of the copy operator.
- void operator =( const SynchronizedObject © );
- };
- CPPUNIT_NS_END
- #endif // CPPUNIT_SYNCHRONIZEDOBJECT_H
|