Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381410
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:31:13

 // 互斥对象能够确保线程拥有对单个资源的互斥访问权。

//////////////////////////////////////////////H////////////////////////////////////////////
#ifndef LGLIB_MUTEX_H
#define LGLIB_MUTEX_H

namespace lglib
{
  class __LGLIB__ lg_Mutex
 {
 private: // 私有成员
  HANDLE m_hMutex;
 public:  // 构造/析构
 
      lg_Mutex();
      virtual ~lg_Mutex();
  
 public:  // 方法
  
  /*!
   * 互斥锁,对互斥体进行上锁操作。
   */
  void lock( void );
  
  /*!
   * 互斥解锁,对上锁的互斥体解锁。
   */
  void unlock( void );
  
  /*!
   * 检测互斥体,用于判断当前互斥体的状态。
   *
   * @return true表明互斥体已经上锁,false互斥体没有上锁。
   */
  bool tryLock( void );
 };
}
#endif

///////////////////////////////////////CPP/////////////////////////////////////////////
namespace lglib
{
 // 构造
 lg_Mutex::lg_Mutex()
 {
  m_hMutex = CreateMutex( NULL, FALSE, NULL );
  if ( m_hMutex == NULL )
  {
   throw( this );
  }
 }

 // 析构
 lg_Mutex::~lg_Mutex()
 {
   ::CloseHandle( m_hMutex );
 }

 // 互斥锁
 void lg_Mutex::lock( void )
 {
  WaitForSingleObject( m_hMutex, INFINITE );
 }
 
 // 互斥解锁
 void lg_Mutex::unlock( void )
 {
  ReleaseMutex( m_hMutex );
 }
 
 // 检测互斥体
 bool lg_Mutex::tryLock( void )
 {
  return ( WaitForSingleObject( m_hMutex, 0 ) == WAIT_OBJECT_0 );
 }
}

posted on 2006-04-29 10:23 longest 阅读(546)   


--------------------next---------------------

阅读(175) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~