ホーム>source

SystemCには、デルタ通知と呼ばれる一種の通知があり、次の2つのメソッドで呼び出すことができます。

<前>ウィズウィズ

または

<前>ウィズウィズ

これは、デルタ通知呼び出しで、イベントに敏感なプロセスが次のデルタサイクルの評価フェーズ中に実行されることを定義します。

では、いわゆる「デルタサイクル」とは何でしょうか。クロックサイクルまたは特定の期間と同じように定義されていますか?

event.notify(SC_ZERO_TIME);
あなたの答え
  • 解決した方法 # 1

    デルタサイクルはクロックサイクルではなく、時間が進んでいません。デルタサイクルは、現在の時間の現在の実行フェーズからシミュレートされる新しい更新とイベントトリガープロセスをシミュレートするために使用されます。

    簡単なシミュレーション手順は次のとおりです。

    評価フェーズ:現在の実行キュー内のすべてのスケジュールプロセスを実行します

    更新フェーズ:値を更新し、新しいトリガーされた実行可能なプロセスを待機キューまたはt + Nのキューに追加します。

    キュー(t + 0)が空でない場合は、キュー(t + 0)を実行キューに移動して、ステップ1に進みます。

    待機キュー(t + 0)が空の場合、時間を最も近いタイムステップに進め、 キュー(t + X)を実行キューに移動し、ステップ1に進みます

    キューが空の場合、イベントをシミュレートする必要がないことを意味し、シミュレーションは終了します。

    したがって、デルタ通知を使用している場合、イベントとそのトリガーされたプロセスは、現在の実行および更新フェーズの直後に実行されるようにスケジュールされます。したがって、この実行フェーズの時間は終了したが、現在実行されている他のスケジュールプロセスがまだある場合、それらのプロセスを実行するために再度評価フェーズに進み、シミュレーションが同じタイムスタンプにあるため、時間は進んでいない。

    即時通知と呼ばれる別の用語があり、引数なしでnotify()を呼び出します。次に、プロセスは、次のデルタサイクルを待たずに、現在の実行キューにすぐにスケジュールされます。

  • 解決した方法 # 2

    <前>ウィズウィズ

    遅延通知と呼ばれます。遅延通知を待機しているプロセス(つまり、イベント待機中)は、すべての待機中のプロセスが実行された後、つまり次のデルタサイクル(更新フェーズの後)で実行された後にのみ実行されます。

    event.notify(SC_ZERO_TIME); or event.notify(0, SC_NS);

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ PythonからCにバイト文字列を渡す