C++面向对象多线程学习笔记_C++组件简介

1. 面向对象方法

面向对象编程技术可用于解决许多过程编程技术难以解决的问题,面向对象架构可用于管理并行编程情况下出现的死锁、无限延迟以及数据竞争问题。可使用面向对象组件来模块化应用程序可能需要的线程需求。使用封装和对象访问策略来简化并发和并行编程。在面向对象应用程序中使用多线程的最有效途径是通过构建于C++进程间通信组件(IPC)、C++同步组件以及C++互斥组件之上的应用框架。而构建IPC、同步和互斥组件的最有效途径是构建接口类和类库,让它们封装提供线程和API任务的操作系统服务。通过使用接口类、类库以及多线程应用框架,C++程序员可以构建充分利用多线程、多处理器环境的面向对象架构。

2. 面向对象架构

软件的架构是一套主宰软件操作的规则、模式、进程以及断言。它表示与数据组织和执行流程有关的整体结构,反映了设计思想、开发方法学以及域模型。当软件基础架构基于代码/数据封装、代码/数据继承和多态时,此软件就称做面向对象架构。具有面向对象架构的软件构建于类和类层次之上,它使用组件方法来构建软件。其中每个组件都是一个独立的软件部分,具备特定的功能。我们可以将这些组件装配起来形成一个更大的软件部分或者生成一个完整的应用程序。

3. 面向对象软件组件

面向对象软件组件是独立的功能性单元。每个组件均是某些人物、地点、事件或思想的模型,都包含一些数据和服务列表或包含可以操作以上数据的运算。它可以对向外提供部分或所有的数据与服务。其中能够为外界所用的数据与服务(一般会隐藏数据)称做组件的接口(interface)。组件是用于构建程序、应用,甚至其它组件的基石。

C++软件组件是一种软拼装体,用于构建应用于多目的、多种类应用以及可能无限制组合体的一般性软件部分。常用的C++组件有以下4种:

1>. 类;

2>. 集合和容器;

3>. 类库;

4>. 应用框架。

这些组件赋予了应用程序真正的面向对象架构。使用它们,我们可以引入面向对象架构、增量多线程以及多线程架构的思想。在这些组件中,应用框架使用集合类、容器类、类库以及基本类。集合、容器和类库组成了更基本的类。类组件是所有其它C++组件的基础。

类具有不同的类型,某些类类型仅对用作蓝图类(blueprint class)有用,这些蓝图类为其他类提供推荐接口策略,而另外一些类型仅能用作基类,还有一些则不宜用为基类。常用类型可归为以下8类:

1>. 具体类:表示一个祖先-后代世系终止的结束类,它是进一步继承的终点。它可以在实现时进行优化,因为其不需要担心派生类

中的功能性,它最小化了对其他类的依赖性;

2>. 抽象类:为所有后代提供蓝图的类。为了使用它,用户必须从其上派生出一个新类,而且为它上面声明的所有纯虚函数提供实际定义;

3>. 接口类:类用户可用的数据与函数成员组成了它的接口。它可用于修改和增强另一个类或类集合的接口,使修改后的类更易于使用、功能更强或语义上更正确。它也可充当非任何类成员函数的包装器。当我们包装在线程处理、进程间通信和多任务处理中使用的操作系统基本要素时,接口类就会发挥作用。通过封装操作系统的基本要素,为用户提供这些基本要素的一般性接口,使代码跨平台的移植性更强。

4>. 节点类:它可用于继承,但不含纯虚函数,可以即时使用,其又着眼于未来,被设计为可重用的,提供了可以在派生类中覆盖的虚成员函数。又提供了可以被派生类继承的受保护数据成员和成员函数,可以使用基类的指针在后代类中操作成员函数,可以通过多态和继承特殊化节点类;

5>. 支持类:与域无关,可以跨域使用。在不同的应用程序中非常有用;

6>. 域类:创建用来模拟指定域内实体的类,它为现实的某些方面建模,可捕获某些现实过程或概念的规则、断言和行为;

7>. 应用类

8>. 集合和容器类:为充当其它对象组一般性容纳器的对象。

类库和应用框架是不同的。类库可用于它能应用的几乎任何方面,而应用框架是一个类的集合,有预定义的结构,并表示一个应用。应用框架类之间的关系是事先制定的,其使用也只限于它所表示应用的范围之内。而类库之间的类根本没有任何关联,只是不同的类别。

在一个具有面向对象架构的应用之内,建议使用应用框架来解决所有多线程问题。它决定并行和并发有意义的地方。它的用户受益于并行的同时应当隐藏它。与域类一起,多线程应用框架必须正确使用互斥类和IPC类来提供支持并发和多进程的软件基础。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,574评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,620评论 4 59
  • 打球时经常遇到防守不积极的队友,被人轻松过掉,轻松得分,水桶那块最短的木板注定了水桶最大的容量,要想赢球自然是痴心...
    都市打工人阅读 569评论 0 1
  • 二十几岁的我,像这大雪覆盖的世界,虽身在其中却辨不清脚下的路! 人的一生若是可以活到八十岁的年龄,那我的生命已走过...
    张三叁阅读 354评论 0 0