Linux下的线程类封装


前些天弄了一个Windows下的线程类封装,用起来比较方便,现在移植到了Linux下,因为还不会事件机制,所以就用互斥来进行线程的管理,初级应用应该够了。代码如下,大家可以参考一下,如果对你有用,那是最好,如果不完善,还望多提意见。

互斥量头文件:blmutex.h

view plaincopy to clipboardprint?
#ifndef __BL_MUTEX_HEAD_FILE__  
#define __BL_MUTEX_HEAD_FILE__  
#include <stdlib.h>  
#include <pthread.h>  
#include <iostream>  
 
class BL_Mutex  
{  
public:  
  BL_Mutex()  
    : _isCreated( false )  
  {  
    pthread_mutex_init( &_mutex, NULL );  
    _isCreated = true;  
  }  
  ~BL_Mutex()  
  {  
    if ( _isCreated )  
    {  
      pthread_mutex_destroy ( &_mutex );  
    }  
  }  
public:  
  void lock()  
  {  
    pthread_mutex_lock( &_mutex );  
  }  
  void unlock()  
  {  
    pthread_mutex_unlock ( &_mutex );  
  };  
  void trylock()  
  {  
    pthread_mutex_trylock ( &_mutex );  
  }  
private:  
  bool _isCreated;  
  pthread_mutex_t      _mutex;  
};  
class BL_Lock  
{  
  public:  
    BL_Lock( BL_Mutex *bl_mutex )  
      : _lpMutex ( bl_mutex )  
    {  
      if ( _lpMutex )  
        _lpMutex->lock();  
    }  
    ~BL_Lock()  
    {  
      if ( _lpMutex )  
      {  
        _lpMutex->unlock();  
      }  
    }  
  private:  
    BL_Mutex *_lpMutex;  
};  
#endif // __BL_MUTEX_HEAD_FILE__ 
#ifndef __BL_MUTEX_HEAD_FILE__
#define __BL_MUTEX_HEAD_FILE__
#include <stdlib.h>
#include <pthread.h>
#include <iostream>

class BL_Mutex
{
public:
  BL_Mutex()
    : _isCreated( false )
  {
    pthread_mutex_init( &_mutex, NULL );
    _isCreated = true;
  }
  ~BL_Mutex()
  {
    if ( _isCreated )
    {
      pthread_mutex_destroy ( &_mutex );
    }
  }
public:
  void lock()
  {
    pthread_mutex_lock( &_mutex );
  }
  void unlock()
  {
    pthread_mutex_unlock ( &_mutex );
  };
  void trylock()
  {
    pthread_mutex_trylock ( &_mutex );
  }
private:
  bool _isCreated;
  pthread_mutex_t      _mutex;
};
class BL_Lock
{
  public:
    BL_Lock( BL_Mutex *bl_mutex )
      : _lpMutex ( bl_mutex )
    {
      if ( _lpMutex )
        _lpMutex->lock();
    }
    ~BL_Lock()
    {
      if ( _lpMutex )
      {
        _lpMutex->unlock();
      }
    }
  private:
    BL_Mutex *_lpMutex;
};
#endif // __BL_MUTEX_HEAD_FILE__

  • 1
  • 2
  • 3
  • 下一页

相关内容