新手学C++多线程编程(1)
C++多线程编程(1)
2.在面向对象应用程序中使用多线程的最有效途径:
3.在C++中,面向对象架构构建于C++组件。
4.组件接口:能够被外界使用的数据和服务。C++组件虽然是独立的,但不能单独作为一个完整的程序或应用,而是用于构建应用于多目的、多种类应用以及可能无限制组合体的一般性软件部分。
5.软件模型两种主要类型:
6.常用类类型(8种):
(1)具体类(concrete class):子承父业的独立终止类
(2)抽象类(abstract class):为子类提供布局和蓝图的基类,必须派生新类来声明对象,需声明纯虚函数
(3)接口类(interface class):为非面向对象代码和数据提供面向对象性用来封装独立函数,修改或增强
(4)节点类(node class):提供继承和多态基础;不包含纯虚函数。
(5)支持类(support class):不管在任何域内,对于不同的应用都非常有用。
(6)域类(domain class):创建类在指定域内模拟部分现实或实体。
(7)应用类(utility class):不管在任何域内,对于不同的应用都非常有用。
(8)集合容器类(collection and container class):其他对象组的通用容纳器。
7.纯虚函数声明:virtual void function(void)=0;
8.私有数据成员及成员函数(private)不能被非该类成员函数所访问,且不能被继承。不是类接口一部分。
9.接口类:用于修改和增强完善另一个类或类集合的接口。典型应用:容器适配器(container adaptor),它是标准模板库STL的一部分。
10.节点类:
11.域类:创建用来模拟指定域内实体的类。域类与编程支持类、用户接口类或数据库类完全分离,除非该域为系统编程。它可以抽象基类、具体类或节点类。
12.支持/应用类:与域无关,可跨域使用。如日期/时钟类或计量。另一种是用户接口类,如列表框类或滚动条类。
13.集合和容器类:操纵不同种类或相同种类的对象组。用于管理对象组的方式与传统数组管理传统数据类型(如整型或字符型等)的方式是一样的。集合和容器类可以用于实现域类。
STL模板参数化: vector Myvector;
缺点:STL不是多线程化的,所以在多线程架构中使用STL时要小心谨慎。
14.在一个具有面向对象架构的应用之内,建议用应用框架解决所有多线程问题。与域类一起,多线程应用框架必须正确使用互斥类和IPC类来提供支持并发和多进程的软件基础。
下图是多线程架构图: