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

Ko Tanikawa dev @ agapesystem.com
2004年 7月 17日 (土) 23:13:10 JST


谷川です。皆様,的確なフォロー,どうもありがとうござい
ました。結果的には,タスクを起床待ち状態にする前に 
can_wup(TSK_SELF)を実行することで解決しました。

> 「uITRON 初心者」ということで、もしかしたら谷川さんはタスクの
> 起床をWindowsやUnixの外部プログラムを起動するもののように
> 思われているのかもしれないと思いました。

図星でした…(^^;)基本的にこの勘違いをしていました。実
際には2重起動してなくて,キューイングされているだけで
した。

> タスクIDで指定するタスクの実体は常に一つであり、サービスコール
> がタスクに与える影響は、タスクの状態を変化させるだけだからです。

同じタスク ID のものが2重起動することはない,と言うこ
とですね。タスク ID を変えれば,

CRE_TSK(TASK1, { TA_HLNG, (VP_INT) 1, task, MID_PRIORITY, STACK_SIZE, NULL });
CRE_TSK(TASK2, { TA_HLNG, (VP_INT) 2, task, MID_PRIORITY, STACK_SIZE, NULL });
CRE_TSK(TASK3, { TA_HLNG, (VP_INT) 3, task, MID_PRIORITY, STACK_SIZE, NULL });

みたいに,関数そのものは共用できるんですよね?このあた
りが興味深いですね。

> ちなみに、待ち/待ち解除を行うのもタスクの起動/終了を行うのも
> かかるCPUパワーにはそれほど差は出ません。

貴重な情報ありがとうございます。

何となく,だんだん分かってきて嬉しく思います。今回は本
当に助かりました。まだまだ壁に突き当たると思いますが,
頑張って乗り越えていきたいと思います。

> トラブル対応中なのに呼ばれてしまった。(号泣)

す,すみません,解決されることをお祈りします。

-- 
dev @ agapesystem.com 谷川