KSynLock.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // KSynLock.cpp: implementation of the KSynLock class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "KSynLock.h"
  5. //////////////////////////////////////////////////////////////////////
  6. // Construction/Destruction
  7. //////////////////////////////////////////////////////////////////////
  8. long KSynLock::Lock()  //检查是否数据已经被锁定,如果是的话返回当前的值
  9. {
  10. if (m_bLock)
  11. ++m_nCount ;
  12. else 
  13. {
  14. if (m_nCurId == 0)//未曾使用
  15. {
  16. m_bLock = TRUE;
  17. m_nCurId = 1;
  18. m_nCount  = 1;
  19. return m_nCurId;
  20. }
  21. else 
  22. return -1*(++m_nCount) ;
  23. }
  24. return -1 * m_nCount;
  25. }
  26. BOOL  KSynLock::UnLock(long id)
  27. {
  28. //要求反锁者为当前使用者,可以反锁
  29. if (id == m_nCurId)
  30. {
  31. m_bLock = FALSE;
  32. if (m_nCount <= m_nCurId)  
  33. {
  34. m_nCount = m_nCurId = 0;
  35. printf("nn重置Index为零!!!nn");
  36. }
  37. else 
  38. m_nCurId ++;
  39. return TRUE;
  40. }
  41. return FALSE;
  42. }