掲示板一覧   -   トピック一覧
   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オブジェクトでの処理は非同期にして
すぐに次のシミュレーション時間に進むようにしなければなりません。

また、コールバックの仕組みはありませんので、非同期で実行している
処理を確認するようなメソッドの呼び出しを、別のアクション要素から
行うようにする必要があるかもしれません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ