CppUnit部分核心代码之SynchronizedObject(同步对象,支持多线程)

SynchronizedObject (同步对象,支持多线程)

说明:

使得CppUnit测试框架支持多线程,在实现的过程中主要使用了RIIA的思想,如果单个的测试类需要支持多线程,就需要派生自该类,设置相关的同步机制。

预定义宏:

在实现的过程中,支持了类得嵌套定义,互斥体和临界区的抽象定义,保证了多线程的访问,其中临界区使用了RIIA的思想。

类设计详解:

类名:

class CPPUNIT_API SynchronizedObject

类图:


内嵌类型:

<public 支持用户的继承实现>

class SynchronizationObject

  {

    public:

      SynchronizationObject() {}

      virtual ~SynchronizationObject() {}

 

      virtual void lock() {}

      virtual void unlock() {}

  }; 互斥体,用户自定义实现相关的lock和unlock即可

 

<protected:给继承类使用,对外不暴露>

class ExclusiveZone

  {

    SynchronizationObject *m_syncObject;

  public:

    ExclusiveZone( SynchronizationObject*syncObject )

        : m_syncObject( syncObject )

    {

      m_syncObject->lock();

    }

    ~ExclusiveZone()

    {

      m_syncObject->unlock ();

    }

  };   // 临界区,实现了资源获得即初始化的思想模型

成员变量:

protected:

 SynchronizationObject *m_syncObject; // 互斥体

成员函数:

SynchronizedObject(SynchronizationObject *syncObject =0 )

说明:

构造函数,设置相关的互斥体。

 

virtual~SynchronizedObject();

说明:

析构函数,释放相关的互斥体。

 

virtual void

setSynchronizationObject(SynchronizationObject*syncObjec)

说明:

保护访问段函数,给继承类设置自己的互斥体。

 

私有函数

private:

  SynchronizedObject( const SynchronizedObject&copy );

  void operator =( const SynchronizedObject&copy );

不支持拷贝和赋值操作符。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值