《UML入门教程(中文版)part00005》.pdf
文本预览下载声明
366计计第三部分 参 考 资 料
下载
成状态时,同步状态为空。
可能存在多个进入同步状态的输入弧,但是它们必须来自相同顺序区域里的分叉。同样,
可以存在多个离开同步状态的输出弧而在顺序区域结合。因为每个区域都是顺序的,故不会
存在多条弧的冲突危险。
同步状态可以是一个对象流状态。在这种情况下,它代表从一个区域传到另外一个区域
的值构成的队列。
表示法
同步状态用一个小圆圈来表示,圆圈中上界,上界可以是一个整数或者是一个表示无限
的星号( * ) 。从同步条(一根粗线)符号到同步状态有一个转换箭头 ,还有一个从同步状态到另外
一个区域里的同步条的转换箭头(如图 1 3 - 1 7 7)。
同步状态最好画在两个区域的边界之间,但并不总是可以做到这样(两个区域并不相邻),
在任何情况下,连接的拓扑结构都没有二义性。
在活动图中,每个转换弧代表一个状态。因此,可以从分叉的输出画一个箭头到结合的
输入,而不必显式地显示同步状态(但同步状态需要显示它的边界)。
分叉
并发区域
同步状态(无限制)
结合
图13-177 同步状态配置
示例
图1 3 - 1 7 8显示了购票情况的状态图。除了必须在选座之后才能计算款项并寄出外,购票
和收钱并发进行。这种同步通过在 Pick Seats 和 Post Charges 之间插入一个同步状态来显
示。在Pick seats 之后存在一个分叉,因为它后面有 Print tickets 和同步状态。Print tickets
不必等待同步。在 Post charges 前有一个结合,因为它必须等待 Validate account 和同步状
态。当Print tickets 和 Post charges 都结束后,该组成状态结束, Mial tickets 被执行。
该同步状态具有一个为 1 的上界。不需要更大的上界,因为该组成状态的每次执行只存在
一个同步。
第13章 术 语 大 全计计367
下载
同步状态
图13-178 单个订单的同步状态
图1 3 - 1 7 9显示了订单填写处理过程的批处理形式。在这种变体中,很多订单离线填写。
订单由一个服务器填写,收钱由另外一个服务器处理。在订单填写之前不能收钱,但是订单
可以超过收钱而使同步状态有一个无限的上界。这是经典的生产者-消费者情况。
分叉
分支
不限定的同步状态
结合状态
结合
图13-179 带有无限同步状态的生产者 -消费者情况
讨论
同步状态为生产者-消费者问题提供了具有最少花费的建模的能力,并且比普通的并发结
368计计第三部分 参 考 资 料
下载
构更具安全性,因为每个并发区域始终保持一个控制线程。因为并发父状态退出的时候会清
空同步状态,所以不存在超限的危险(如果上界无限)。但如果在包含分支的循环里使用同步
状态,则存在挂起的危险:一个区域已经结束而另外的区域还在等待一个永远不会到达的同
步环。如果每个状态都处在等待从对方发出的环的分支里,则存在发生死锁的可能。在允许
决定的并发系统里,没有办法完全避免这样的情况。即使没有同步状态,由于不定问题的存
在,也不能保证终结。
341. synchronous action( 同步动作)
发送对象停下来等待响应的一个请求,一个调用。对比: asynchronous action 。
342. system(系统)
组织起来以完成一定目的的连接单元的集合。一个系统可以用一个或者多个视点不同的
模型描述。系统是“完整模
显示全部