C++多线程编程学习二 [类中封装互斥量的设计]
来源:互联网 发布:java逆序输出一个整数 编辑:程序博客网 时间:2024/06/16 02:19
之前我也提到过,如果一个类的数据成员中在多线程环境中可能会被竞争使用时,一定要在类中解决这个问题,而不是在代码编写过程中在每次使用时去申请或释放,这样做的确很灵活,但是随着代码量的增加和开发时间长的话,你可能会漏掉或忘记对竞争资源的处理,believe me!这是每个程序员都会犯的错误,因此,我们必须在类的设计时就考虑到这个问题,这样做也可以避免在别人使用你的类的时候,在不了解类结构的情况下犯相同的错误。
那么类究竟应该怎么设计呢?
C++ 最大的优点不仅仅是面向对象,继承和多态也是它很重要的优点,在些我们就可以利用这些优点。在《c++面向对象多线程编程》一书中给出过一个不错的例子,我拿出来和大家共同分析一下。
首先设计一个“简单的互斥接口类”----mutex 该类功能是提供互斥量及操作
class mutex{
protected:
HANDLE Mutex;
public:
mutex();
~mutex();
int lock();
void unlock();
};
然后给出实现主要功能的类,在此以计算器类为例
class calculator{
protected:
double Result;
public:
calculator();
calculator(string Input);
};
计算器类可包含多种操作,上面只写出其中几个成员函数。
然后,再出给连接这两个类的接口类
class mt_calculator:private mutex{
private:
calculator Calculator;
public:
mt_calculator();
double evaluate(string Input);
};
double mt_calculator::evaluate(string Input)
{
if( SUCCEED == lock())
{
printf("Do the task");
unlock();
return Result;
}
return 0;
}
该类私有继承了mutex类,同时,包容了calculator类,同时,只提供calculator类有用的接口,这样,在calculator对象的使用时,在调用evaluate函数时,代码编写人员无需考虑数据竞争问题,可直接使用,因为互斥量的申请与释放在类中完成。
这样,我们就完成了计算器类的设计。
- C++多线程编程学习二 [类中封装互斥量的设计]
- Linux C 多线程编程学习(二)
- C++:多线程类库的设计与实现(二)
- 巩固C++(二)----多线程编程
- 多线程编程的设计模式 临界区模式(二)
- 多线程编程的设计模式 不变模式(二)
- 多线程编程的设计模式 不变模式(二)
- Java 多线程编程学习(二)
- 多线程编程学习二(对象及变量的并发访问)
- 多线程编程学习二(对象及变量的并发访问)
- 多线程编程学习二(对象及变量的并发访问)
- 多线程编程之线程的封装
- 多线程编程之线程的封装
- 优雅设计封装基于Okhttp3的网络框架(二):多线程下载功能原理设计 及 简单实现
- C多线程编程-互斥量
- J2ME中多线程网络连接编程的分析,与设计
- C#.net 多线程编程(二)
- linux c 多线程编程练习(二)
- C++多线程编程学习一 [关于数据竞争问题]
- 树言树语:喜欢的工作
- SQLSERVER2005数据库用户不能删除的解决办法
- 在linux系统用heartbeat实现双机热备
- 打破传统模式,提升竞争层次
- C++多线程编程学习二 [类中封装互斥量的设计]
- 互联网新模式的探索能否成功
- 解决SQL Server2000安装挂起
- C++多线程编程学习三 [FIFO队列设计]
- 淘宝模式能不能被复制
- Android,开源还是封闭?
- Linus大神与造纸术蔡伦入选最有影响力的100位发明家
- 屏幕录像专家V7.5注册机
- 整形美容网站的品牌建设征程