+ -
当前位置:首页 → 问答吧 → 锁的问题请求帮忙....

锁的问题请求帮忙....

时间:2010-07-20

来源:互联网

  1. #ifndef __CTEST__H
  2. #define __CTEST__H
  3. #include <map>
  4. using namespace std;

  5. class CTest
  6. {
  7.     public:
  8.         CTest()
  9.         {
  10.         }

  11.         ~CTest()
  12.         {
  13.         }

  14.         static void add();

  15.     private:
  16.         static pthread_mutex_t m_IdMSAddrMapMutex;
  17. };

  18. #endif

  19. #include <iostream>
  20. #include <string>
  21. #include <errno.h>
  22. #include <assert.h>
  23. #include <stdio.h>
  24. #include <string.h>
  25. #include "a.h"
  26. using namespace std;
  27.         
  28. pthread_mutex_t CTest::m_IdMSAddrMapMutex = PTHREAD_MUTEX_INITIALIZER;
  29.         
  30. void CTest::add()
  31. {      
  32.     int n = pthread_mutex_trylock(&m_IdMSAddrMapMutex);
  33.     printf("n = %d error = %s\n", n, strerror(errno));
  34.     printf("%s\n", "after Lock CUserObj::addIdMSAddrMap....");
  35.     pthread_mutex_lock(&m_IdMSAddrMapMutex);
  36.     printf("%s\n", "before Lock CUserObj::addIdMSAddrMap....");
  37.     pthread_mutex_unlock(&m_IdMSAddrMapMutex);
  38.     printf("%s\n", "unLock CUserObj::addIdMSAddrMap....");
  39. }

  40. int main()
  41. {
  42.     CTest::add();
  43.     assert(0);
  44. }
复制代码
运行结果:
n = 0 error = Success
after Lock CUserObj::addIdMSAddrMap....

为什么会阻塞住......多谢多谢....

作者: ruchong   发布时间: 2010-07-20

trylock
lock

作者: zliming   发布时间: 2010-07-20

仔细看看pthread_mutex_trylock的使用吧

作者: rain_fish   发布时间: 2010-07-20

YYYYYY

作者: peidright   发布时间: 2010-07-20