タスク処理に関する持論


タスクマネージャー(タスクの生成、削除を管理するもの)(このソースではDKC_TASK_ENGINE構造体)
タスク(一つの処理)(このソースではDKC_TASK構造体)

タスクマネージャーがタスクを操作する形。

ここで、今までのタスク処理に関して多少不満があった。

と言う事で、これらの解決案としては

  • 一つのタスクマネージャーはタスクを管理できるのは255-256個にする。 \

また、一連のプロセスの流れに対してタスクマネージャーを一個割り当てるようにする。 \
これらのタスクマネージャーを断層構造にして処理をする方が分かりやすいと考える。

また、タスク処理はメモリ使用量を少なく済ませる事が美徳と考える私は
メモリ使用量をかなり少なめにする事にした。
メモリ使用量を少なくするには空き領域情報とかを無くせば良いと思うが、
その情報が無くなるといちいち線形探索である。
ここらへん、どーすれば良いかが良くわからない・・・。
ARRAY_ONEBYONEとか?

 妄想メモ

  • 通称、順序無しリスト(std::vectorのようなもの?)を使おうか?。\

http://www.aya.or.jp/%7Esanami/peace/memorial/code41-50.html#CODE44

  • タスクワークのプールを外部にする事で、コピーのオーバーヘッドを抑える事が出来るのでは?


と、言う事で、考えてみた結果・・・。

決定事項

  • 関数へのポインタが何もしない関数( Return() )の時のタスク領域は使用可能

以上。このような思想の元にタスクエンジンをくみ上げる事にした。

*1:例えばシューティングで弾を沢山出したい時、弾ひとつをタスクとすると沢山のタスクがタスクマネージャーに登録される。
これにより、主要処理をしているタスクの状態遷移が見にくくなり、デバッグしにくくなる。
なので、この場合はタスクの中にもう一つ、弾用タスクエンジンを使って、または専用の弾の「生成」「消滅」マネージャーを作ってしまうのが良いと思われる。