アクティブ・オブジェクトと並行性

アクティブ・オブジェクトは、制御スレッドを所有するアプリケーション・オブジェクトです。 アクティブ・オブジェクトには、コントローラーの機能があります。 各アクティブ・オブジェクトは、イベント・キューを所有し、それによって着信イベントを処理します。 デフォルトで、サブオブジェクトは同じ親オブジェクトのスレッド (ひいてはそのイベント・キュー) を共有します。これは、サブオブジェクトもアクティブの場合は例外で、その場合は、それぞれ固有のスレッドを所有します。

アクティブな並行性に対応するものが、逐次並行性です。 順次オブジェクトはシステム・スレッド上で実行され、システム・イベント・キューがそのオブジェクトのイベントとその他の順次オブジェクトのイベントを先入れ先出し (FIFO) の順序で処理できるようにします。

アクティブ・オブジェクトは、オブジェクト・モデル図では、従兄弟などの血縁関係のように描写されますが、太い境界線を使用します。 次の図で、CodeGenerator は、太い境界線を使用したアクティブ・オブジェクトとして描かれているのに対し、Model および CGProperties オブジェクトは順次オブジェクトで、そのため細い境界線になっています。

IBM® Rational® Rhapsody® は、データ・メンバーとして RiCTask という事前定義されたタイプのオブジェクトを追加することで、アクティブ・オブジェクトを実装します。 このアクションにより、アクティブ・オブジェクトで、組み込まれた RiCTask メンバーの機能を再使用することができます。 例:

typedef struct A A;
struct A {
    RiCTask ric_task;
    /* other members of A */
};

フィードバック