活动类在 IBM® Rational® Rhapsody® 中视为任务。
消息队列是在非共享内存环境中使用的缓冲区,其中任务通过相互传递消息而非存取共享变量来进行通信。任务共享一个公共的缓冲池,由 OMOSMessageQueue 实现缓冲区。消息队列是一个无限制的先进先出队列,受到保护以防不同线程进行并发存取。
事件是异步的。当某个类将某个事件发送给另一个类,而不是将其直接发送给目标反应类时,它将该事件传递给操作系统消息队列,而目标类在其准备处理事件时从消息队列的头检索该事件。但是,同步事件可以改为使用触发式操作进行传递。
许多任务都可以将消息写入队列,但一次只能有一个任务从队列读取消息。读取者将在消息队列上等待,直至有可供处理的消息。消息可以是任意大小。
要相互通信的过程必须以某种方式链接。通信链路由关系构成,使用对象模型图中的类之间所绘制关联线的格式。链路可以是单向或双向(对称)的。如果从类 A 到类 B 存在单向链路,那么类 A 可以向类 B 发送消息,但类 B 不能向类 A 发送消息。如果存在双向链路,那么两个类可以相互发送消息。消息队列与链路连接,并允许消息的发送方和接收方相互独立地继续自己的处理活动。
在有内存保护的操作系统中,一个活动类可以调用另一个活动类的操作,前提是操作系统自身支持此类直接调用,且两者间存在关联关系。对于具有共享内存的操作系统,产品使用操作系统消息传递来传递事件。是否通过内存保护支持直接函数调用取决于操作系统自身,而不是 Rational Rhapsody 框架。
在 Rational Rhapsody 应用程序中,BaseNumberOfInstances 特性(在 CG::Event 下)指定为事件分配的内存池的初始大小。该池是在程序初始化时动态分配的。 AdditionalNumberOfInstances 特性(在 CG::Event 下)指定当初始池变满时运行时期间需要分配的任何额外内存的大小。额外内存分配在堆上完成,并且包含对初始内存池的重新整理。