前驱
这是《两种多线程模型》的第三篇文章,前两篇文章分别阐述了“两种多线程模型”的概念和分析思路,如果您还没有阅读那篇文章,直接读下面的文字可能会难以理解。
前驱文章列表:
1. 两种多线程模型的管理 · 一(概述)
2. 两种多线程模型的管理 · 二(分析)
这篇文章将会详细介绍 两种多线程模型 中 流水线 模型的细节和实现过程。实现的语言为C++,使用C++0x特性,如需尝试编译测试请开启C++0x编译选项(-std=c++0x
)。
第一步:声明流水线接口
流水线类只需要实现三个功能:
- 初始化(可省缺)
- 执行过程
- 销毁过程(可省缺)
在第一篇文章中我提到,执行过程结束后应有一个判断是否结束生产线的逻辑。
在执行过程中有可能出现使流水线结束的因素,所以执行过程有权控制流水线的生命周期,令牌可以以返回值的形式传递。
从设计的角度来说,流水线的实体记录了该流水线所包含的逻辑信息,所以应该符合Singleton
设计模式(即全局只有一个实体)。(对该模式不了解的读者可以先浏览一下相关内容,我将会在以后对一些经典设计模式进行补充)
UML图如下(使用IBM Rational® Software Architect
绘制)。
代码如下:
class AssemblyLine {
protected:
AssemblyLine() {}
virtual AssemblyLine &instance() = 0;
public:
virtual void init() {}
virtual bool main() = 0;
virtual void destroy() {}
};