Pennant的日常
分享工作上的点点滴滴
posts - 75,comments - 21,views - 66454
09 2012 档案
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(16)--- 半同步/半异步
摘要:5.3半同步/半异步1.问题 并发系统通常既包含异步处理服务,又包含同步处理服务。系统程序员有充分的理由使用异步特性改善性能。异步程序一般更高效,因为可以直接将服务映射为异步机制,如硬件中断处理程序或者软件信号处理程序。 相反,应用程序员也有充分的理由使用同步处理简化他们的编程强度。通常同步程序更简单。因为可以限制某些服务在处理序列中的良好定义的点上运行。 因此,在定义一个既有同步又有异步执行服务的软件体系结构时,必须解决两个强制条件: 1)该体系结构应该这样设计:需要同步处理的简易性的应用程序开发者无需考虑异步的复杂性。同时,必须将性能最大化的系统开发者不需要考虑同步处理的低... 阅读全文
posted @ 2012-09-30 21:44 汝熹 阅读(601) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(15)--- 监视器对象
摘要:5.2监视器对象1.问题 许多应用程序包含其方法被多个客户机线程并发调用的对象。这些方法通常修改其对象的状态。因此,为了使这些并发应用程序能正确地执行,有必要对对象的访问进行同步和调度。对于这个问题,必须考虑四个强制条件: 1)为了事务分离并避免对象状态不受控制地修改,面向对象编程人员习惯于只通过对象的接口方法访问对象。扩展这种面向对象编程模型以避免对象的数据不受控制的并发修改相对比较直接。因此对象的接口方法应该定义它的同步边界,在同一对象中某一时刻仅有一个方法能处于活动状态。 2)如果客户机必须显式获取和释放低层同步机制,如信号灯、互斥或条件变量,那么并发应用程序将更难进行编程。... 阅读全文
posted @ 2012-09-28 08:44 汝熹 阅读(595) 评论(1) 推荐(1) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(14)--- 并发模式和主动对象
摘要:并发模式为在多线程或进程间共享资源而设计的2种模式: ·主动对象设计模式将方法执行和方法调用分离开来。目的是加强并发和简化对驻留在自身控制线程中的对象的同步访问。 ·监视器对象设计模式同步化并发方法的执行,以确保同一时刻在对象内部只有一个方法运行。它也允许对象的方法协作调度方法的执行顺序。下面2种模式定义了高层并发体系结构: ·半同步/半异步体系结构模式将并发系统中的同步和异步进程分离,简化了编程而又不影响性能。该模式引入两个通信层,一个处理同步服务,另一个处理异步服务。还有一个排队层协调异步层和同步层服务之间的通信。 ·领导者/追随者体系结构模式提供了 阅读全文
posted @ 2012-09-26 08:56 汝熹 阅读(420) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(13)--- 线程安全接口和双检查加锁优化
摘要:4.3线程安全接口(Thread-Safe Interface)1.问题 多线程组件通常包括多个可被公共访问的接口方法以及可以改变组件状态的私有方法。为了避免出现竞争条件,可以使用一个组件内部的锁对访问其状态的接口方法调用串行化。尽管当每个方法都自包容的时候,这种设计方法能很好地工作。但组件方法可能会相互调用完成计算任务。如果是这样,在多线程组件中有以下几个强制条件尚未解决,它们使用了错误的组件间方法调用的设计方法: 1)应该使线程安全组件避免“自死锁”。当一个组件方法在该组件中获得一个非递归锁,然后调用试图获得同一个锁的另一个组件方法时,会发生自死锁。 2)为了避免出现对组件状态... 阅读全文
posted @ 2012-09-24 08:50 汝熹 阅读(375) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(12)--- 策略化加锁
摘要:4.2策略化加锁(Strategized Locking)1.问题 运行在多线程环境中的组件必须保护其临界区不被客户机并发访问。同步机制与组件功能的集成需要解决以下两个强制条件: 1)不同的应用程序可能要求不同的同步策略,如互斥、读写锁或信息灯。因此,应该可以按照具体应用的需求定制组件的同步机制。 2)加入新的功能和隐错修正应很容易。特别为避免“版本混乱”应始终将这些变化一致地自动地应用于组件系列的所有成员上。2.解决方案 将组件的同步特性变成“可插”的类型,用这种方式将组件的同步特性参数化。每种类型将特定的同步化策略对象化,同步策略包括互斥、读写锁、信号灯或“空”锁等。将这些... 阅读全文
posted @ 2012-09-23 15:30 汝熹 阅读(257) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(11)--- 同步模式与定界加锁
摘要:同步模式 C++惯用法定界加锁(Scoped Locking)能确保当控制进入到某一个范围时,自动获得锁,而当控制离开该范围时,自动释放锁,不管从该范围返回的路径是什么。 策略化加锁(Strategized Locking)设计模式是策略模式的一种特例,它把同步机制参数化,这一机制保护临界区免受并发访问。 线程安全接口(Thread-Safe Interface)设计模式使加锁的开销减至最少,确保组件内部的方法调用不会因为要再次获得一个组件已经拥有的锁而“自死锁”。 如果程序执行期间临界区代码只能以线程安全的方式获得一次锁,双检查加锁优化(Double-Checked Lock... 阅读全文
posted @ 2012-09-22 09:00 汝熹 阅读(532) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(10)--- 接受器 - 连接器
摘要:3.4接受器 - 连接器(Acceptor - Connector)1.问题 在面向连接的网络化系统中,应用程序通常包含相当大量的用于建立连接和初始化服务的配置代理。这些配置代码大多独立于服务对在连接传输端点之间交换的数据所进行的处理。因此配置代码与服务处理代码之间紧密耦合是不理想的,因为这样不能解决以下四个强制条件: 1)它应该很容易地改变连接角色,以支持不同的应用特征。 2)应很容易地增加服务,服务实现和通信协议的种类,而不影响已有的连接建立和服务初始化配置代码。 3)连接建立和服务初始化策略的改变要比应用程序实现的通信协议和服务的改变频率少。 4)对大规模网络化系统,应能通过使用高级的操 阅读全文
posted @ 2012-09-20 09:04 汝熹 阅读(374) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(9)--- 异步完成标记
摘要:3.3异步完成标记(Asynchronous Completion Token, ACT)1.问题 当一个客户机应用程序异步地调用对一个或几个服务的操作请求时,每个服务通过一个完成事件将其响应返回给应用程序。然后应用程序必须向相应的处理程序多路分解该事件。处理程序可以是一个函数或对象,用于处理包含在完成事件中的异步操作响应。要有效地解决这个问题,需要考虑以下3个强制条件: ·一个服务可能不知道客户机应用程序异步地调用其操作时所处的语境。因此,客户机应用程序而不是服务器必须负责确定如何将完成事件多路分解给被指派去处理它的处理程序。 ·要确定在异步操作完成执行后客户机如何多路分 阅读全文
posted @ 2012-09-18 08:57 汝熹 阅读(477) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器
摘要:2.3主动器(Proactor)1.问题 异步处理多个服务请求通常可以改善分布式系统中的事件驱动应用程序的性能。完成异步服务处理后,应该程序必须处理由操作系统发出的表示异步计算结束的相应的完成事件。要有效地支持这种异步计算模型,需解决以下四个强制条件: 1)为了改进可扩展性和延迟性能,一个应用程序必须在禁止耗时长的操作过分地延迟其他操作处理的情况下同时处理多个完成事件。 2)为了使吞吐率最大,应避免CPU之间的任何不必要的语境切换,同步和数据移动。 3)将新的或改进的服务与已有的完成事件多路分解与分配机制集成所花的代价要最少。 4)应用程序代码应尽量不受多线程和同步机制复杂性的影响。2.解决方 阅读全文
posted @ 2012-09-15 08:20 汝熹 阅读(517) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(7)--- 事件处理模式与反应器
摘要:事件处理模式 使用反应器(Reactor)结构化模式,事件驱动的应用可以多路分解并分配从一个或者多个客户机发送给应用的服务请求。反应器模式引入的结构“逆转”了应用中的控制流,这就是所说的好莱坞原则(“不要打电话给我们,我们会打电话给你的”)。然而它的事件分解是串行的。 主动器(Proactor)结构模式使事件驱动应用能有效地多路分解和分配由完成的异步操作所触发的服务请求。能获得并发的性能优势。 异步完成标记(Asynchronous Completion Token)设计模式使应用程序能对它在服务中调用异步操作而引起的响应进行有效地多路分解和处理。 一旦完成了连接和初始化,接受器-连接器(Ac 阅读全文
posted @ 2012-09-13 09:03 汝熹 阅读(710) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(6)--- 扩展接口
摘要:2.4扩展接口(Extension Interface)1.问题 适应应用程序需求的改变常常需要对组件功能的修改和扩展。有时可以在发布组件给应用程序开发人员之前预计到所有的接口的改变。如果不能仔细处理这些改变的话,它们就会破坏现有的使用组件的代码。为了避免这些问题,把组件设计为支持预料到与预料不到的改进也许是必需的。这要求解决以下4种强制条件: 1)当组件接口没有改变时,对组件实现的修改应不破坏现有的客户机代码。 2)当开发人员用外部可见的新服务扩展组件时,不应破坏现有的客户机代码。理想情况下,应该没有必要重新编译客户机代码。 3)组件功能的改变或者扩展应该是相对直接的,既不膨胀现有的组件接口 阅读全文
posted @ 2012-09-10 08:56 汝熹 阅读(462) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(5)--- 截取器
摘要:2.3截取器(Interceptor)1.问题 框架,应用服务器和针对具体领域的软件架构,不能预先知道它们必须提供给用户的所有服务。使用最初设计时并不支持的新服务来扩展某些类型的框架也会是不灵活的。类似地,依靠应用程序自己实现所有必需的服务常常是不理想的,因为这样做破坏了复用的许多好处。因此,框架开发人员必须处理下列三种强制条件: 1)在不需修改核心架构的情况下,架构应允许集成附加服务。 2)把与应用有关的服务集成到框架中,应不影响现有的框架组件,也应不需要对使用框架的现有应用程序的设计或实现做改变。 3)使用框架的应用程序也许需要监视和控制框架的行为。2.解决方案 通过预定义的接口向框架注册 阅读全文
posted @ 2012-09-07 22:21 汝熹 阅读(393) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(4)--- 组件配置器
摘要:2.2组件配置器(Component Configurator)1.问题 由组件构成的应用程序必须提供一种机制,把这些组件配置到一个或多个进程中去。解决这个问题受到三种强制条件的影响: 1)在许多系统和应用程序中,组件功能或者实现细节的改变是很普遍的。对一个组件的修改应该对使用它的其他组件的实现有最小的影响。 2)开发人员在开发应用程序时,常常并不知道最有效地配置或者分布多个组件到进程和主机中的方法。如果开发人员过早地专注于组件的特殊配置,那么这也许会破坏灵活性,降低整个系统的性能和功能特性,并且不必要地增加资源的使用。 3)执行类似组件的配置、初始化和控制这样的普通管理任务应该是直接的,并且 阅读全文
posted @ 2012-09-05 09:02 汝熹 阅读(568) 评论(0) 推荐(0) 编辑
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(3)--- 服务访问和配置模式
摘要:服务访问和配置模式 包装器外观(Wrapper Facade)设计模式把现有的非面向对象的API所提供的函数和数据,封装在更加简洁的、健壮的、可移植的、可维护的和内聚的面向对象的类接口里面。常常应用包装器外观“包装”更低层操作系统API来提高应用程序的可移植性。它也能减轻与使用低层API编程有关的偶发的复杂性。 组件配置器(Component Configurator)设计模式允许应用程序在不必修改,重新编译或者静态地重新链接的情况下,在运行时链接和解链它的组件实现。 截取器(Interceptor)体系结构模式允许透明地把服务加入框架中,并且当事件发生时,能自动地触发服务。因此,截取器为它自 阅读全文
posted @ 2012-09-01 08:32 汝熹 阅读(418) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示