[openrtm-users 01348] Re: high CPU load when deactivate python component

Yosuke Matsusaka yosuke.matsusaka @ aist.go.jp
2010年 7月 6日 (火) 17:44:54 JST


栗原さん

松坂です。

2010/7/6 kurihara shinji <shinji.kurihara @ aist.go.jp>:
> RTMでは、一つのExecutionContextで複数のRTCを駆動する事が可能となっております。
> 仮に、非アクティブ状態でループを回さないようにした場合、一つのECに複数のRTC
> が関連付けられてる状況において、一つの RTC が非アクティブ状態の時に、他のアク
> ティブ状態のRTCまでも駆動関数(on_execute)が実行されないといった事になってしまい
> ます。
>
> 上記のような理由もあり、ExecutionContextのループは、RTCの状態に関わらずループ
> する仕様となっております。

なるほど、理解しました。
金広さん、清水さんの議論を読んで、何となく私の理解がずれている予感がしていたのですが、
これでクリアになりました。

・ExecutionContextは直列リストの構造をしている。
・ただし、あくまで分散コンポーネントモデルなので中央でコンテキストを管理している
 サービスがあるわけではなく、各コンポーネント同士がバケツリレーのような形で
 実行タイミングを通知しあっている。

というわけですね。
改良しようとしてもなかなか難しいところですね、、、。

-- 
Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
  Interaction Modeling Group /
  National Institute of Advanced Industrial Science and Technology (AIST)
  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/



openrtm-users メーリングリストの案内