(toppers-users 1545) Re: タスクの二重起動防止

Kominami Yasuo NBC00224 @ nifty.com
2004年 7月 16日 (金) 20:40:59 JST


小南です。

On Fri, 16 Jul 2004 10:27:29 +0900
Ko Tanikawa <dev @ agapesystem.com> wrote:

> 谷川と申します。 uITRON 初心者で,低レベルな質問で申し
> 訳ありません。
> 

> 自タスクが起床中は自タスクへの起床要求を無視する,と言
> うようなことを簡単に実現する方法はないでしょうか?リレ
> ーが ON かどうか,程度ならまだ良いのですが,タスクAを
> 起床できる条件が複雑になりますと,タスク起床要求前のチ
> ェックが大変になります。

勘違いしていましたらすみません。
「uITRON 初心者」ということで、もしかしたら谷川さんはタスクの
起床をWindowsやUnixの外部プログラムを起動するもののように
思われているのかもしれないと思いました。
この場合は、複数起動させると同一プログラムファイルから複数のプロセスが
並行して実行されることになります。
二重起動しないためには、なんらかの手段ですでに起動されていないかを
調べたり、2番目に起動されるプログラムの中で、すでに同一プログラム
が起動していないかを調べる必要が有ります。

けれどもμITRONでは、この意味での二重起動は起こりません。
タスクIDで指定するタスクの実体は常に一つであり、サービスコール
がタスクに与える影響は、タスクの状態を変化させるだけだからです。

μITRONの場合は、発想を逆転させて、タスクを起動させたい側は、
タスクの状態を気にせずタスクを起床させようとして構わないです。
キューイングしたり、無視したりはサービスコールが面倒見てくれます
(そういう仕様になっています)。
タスク側はリレーを十秒間ONした後、キューイングされた要求があれば
それをどうすればよいか決めれば良いです。キャンセルしても良いし、も
う一度リレーをONしても良いです。

----------- 
小南 靖雄
ykominami @ nifty.com
(NBC00224 @ nifty.com)