GenRS_AutoLock.h
上传用户:hygd004
上传日期:2022-02-04
资源大小:1841k
文件大小:3k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // -------------------------  FILE HEADER  --------------------------------
  2. //
  3. // CM Ident:  $Header: 
  4. //
  5. // COPYRIGHT  AmBow Inc., SuZhou. 2002 All Rights Reserved
  6. //
  7. // File:      GENRS_AutoLock.h
  8. //
  9. // Project:   AmBow's Reusability Project
  10. //
  11. // Purpose:   Inline header file for the class GENRS_SyncObject
  12. //
  13. // ------------------------------------------------------------------------
  14. #ifndef _GENRIC_AUTOLOCK_H_
  15. #define _GENRIC_AUTOLOCK_H_
  16. // --------------------------  System Includes  ---------------------------
  17. // --------------------------  AmBow  Includes  ---------------------------
  18. #include "GENRS_SyncObject.h"
  19. // -----------------------------  Constants  ------------------------------
  20. // -------------------------  Forward References  -------------------------
  21. // --------------------------  Type Definitions  --------------------------
  22. // --------------------------------------------------------  GENRS_AutoLock
  23. // Description: 
  24. //  The Synchronization object helper class.
  25. //  by the lifeline control the lock and unlock.
  26. //  when enter an code block, use this class access multiple thread.
  27. //  sample code:
  28. //  //some place will keep the class GENRS_SyncObject instance such as:
  29. //  GENRS_SyncObject g_accXXSyncObject;
  30. //
  31. //  foo()
  32. //  {
  33. //      GENRS_AutoLock lock(g_accXXSyncObject)
  34. //      
  35. //  }
  36. //  
  37. //  in this function object will auto lock and unlock the variables ,even 
  38. // if the foo will throw some exception.
  39. // ------------------------------------------------------------------------    
  40. class GENRS_AutoLock
  41. {
  42. // ------------------------------------------------------------------------
  43. // Public Methods
  44. // ------------------------------------------------------------------------
  45. //make GENRS_AutoLock can not be called Copy-Constuctor and Assign-Constuctor
  46.     GENRS_AutoLock(const GENRS_SyncObject & rSynObj);
  47.     GENRS_AutoLock & operator=(const GENRS_SyncObject & rSynObj);
  48. public :
  49.     GENRS_AutoLock(GENRS_SyncObject &SyncObj):m_SyncObj(SyncObj)
  50.     {
  51.         m_SyncObj.Lock();
  52.     }
  53.     ~GENRS_AutoLock()
  54.     {
  55.         m_SyncObj.Unlock();
  56.     }
  57. // ------------------------------------------------------------------------
  58. // Private Methods & Data Members
  59. // ------------------------------------------------------------------------
  60. private:        
  61. // --------------------------  Private Data Members  ----------------------
  62. // -------------------------------------------------------------- m_SyncObj
  63. // Description:
  64. //   this object want to lock which sync object.
  65. // ------------------------------------------------------------------------
  66.     GENRS_SyncObject& m_SyncObj;
  67. };
  68. #endif