home *** CD-ROM | disk | FTP | other *** search
- /*
- *****************************************************************************************
- * *
- * COPYRIGHT: *
- * (C) Copyright Taligent, Inc., 1997 *
- * (C) Copyright International Business Machines Corporation, 1997-1999 *
- * Licensed Material - Program-Property of IBM - All Rights Reserved. *
- * US Government Users Restricted Rights - Use, duplication, or disclosure *
- * restricted by GSA ADP Schedule Contract with IBM Corp. *
- * *
- *****************************************************************************************
- */
- //------------------------------------------------------------------------------
- // File: mutex.h
- //
- // Lightweight C++ wrapper for umtx_ C mutex functions
- //
- // Author: Alan Liu 1/31/97
- // History:
- // 06/04/97 helena Updated setImplementation as per feedback from 5/21 drop.
- // 04/07/1999 srl refocused as a thin wrapper
- //
- //------------------------------------------------------------------------------
- #ifndef MUTEX_H
- #define MUTEX_H
- #include "utypes.h"
-
- #include "umutex.h"
-
- //------------------------------------------------------------------------------
- // Code within this library which accesses protected data
- // should instantiate a Mutex object while doing so. You should make your own
- // private mutex where possible.
-
- // For example:
- //
- // UMTX myMutex;
- //
- // int InitializeMyMutex()
- // {
- // umtx_init( &myMutex );
- // return 0;
- // }
- //
- // static int initializeMyMutex = InitializeMyMutex();
- //
- // void Function(int arg1, int arg2)
- // {
- // static Object* foo; // Shared read-write object
- // Mutex mutex(&myMutex); // or no args for the global lock
- // foo->Method();
- // // When 'mutex' goes out of scope and gets destroyed here, the lock is released
- // }
- //
- // Note: Do NOT use the form 'Mutex mutex();' as that merely forward-declares a function
- // returning a Mutex. This is a common mistake which silently slips through the
- // compiler!!
- //
-
- class U_COMMON_API Mutex
- {
- public:
- inline Mutex(UMTX *mutex = NULL);
- inline ~Mutex();
-
- private:
- UMTX *fMutex;
- };
-
- inline Mutex::Mutex(UMTX *mutex)
- : fMutex(mutex)
- {
- umtx_lock(fMutex);
- }
-
- inline Mutex::~Mutex()
- {
- umtx_unlock(fMutex);
- }
-
- #endif //_MUTEX_
- //eof
-
-
-
-
-
-
-
-
-