掲示板一覧 - トピック一覧 Enterprise Architect 全般
マルチスレッドでのシミュレーションについて |
| フラット表示 | 前のトピック | 次のトピック |
| 投稿者 | トピック |
|---|---|
| tkouno | 投稿日時: 2013-1-18 10:40 |
EA Administrator ![]() ![]() 投稿: 3939 |
マルチスレッドでのシミュレーションについてサポート宛にいただきましたご質問への回答の要約です。
○ご質問 ステートマシン図のシミュレーションで、マルチスレッドで シミュレーションを実行しています。片方のスレッドで、COMオブジェクトを 呼び出して処理をしていますが、この処理が完了するまで、別のスレッドの処理が進みません。 これは仕様ですか? ○回答 ご質問にあります挙動は、現在のEnterprise Architectのシミュレーションで 意図した通りの挙動になります。 Enterprise Architectのシミュレーションは、実時間(処理時間)に 関係なく、シミュレーション内部に適用される「シミュレーション時間」が 基準になります。 この1シミュレーション時間ごとに、1つの処理が行われます。 マルチスレッドの場合、すべてのスレッドについての1つの処理が 終了しますと、「1シミュレーション時間」が経過したことになり 次の処理に移ります。 この「1シミュレーション時間」は、処理が完了するまでが単位ですので COMオブジェクトのメソッドの呼び出しを行う場合、その呼び出しの処理が 完了してEAに戻るまでの時間が「1シミュレーション時間」になります。 ですので、例えば、COMオブジェクトのメソッドの処理が60分かかる場合には その時の「1シミュレーション時間」は60分になるということです。 (その次の処理がすぐに終わる場合は、次の「1シミュレーション時間」は 1秒未満になることもあります。) つまり、「1シミュレーション時間」は、人間の時間とは対応せず 一定ではありません。 今回のような場合には、COMオブジェクトでの処理は非同期にして すぐに次のシミュレーション時間に進むようにしなければなりません。 また、コールバックの仕組みはありませんので、非同期で実行している 処理を確認するようなメソッドの呼び出しを、別のアクション要素から 行うようにする必要があるかもしれません。 |
| フラット表示 | 前のトピック | 次のトピック |
| 題名 | 投稿者 | 日時 |
|---|---|---|
| » |
tkouno | 2013-1-18 10:40 |




