タスク処理に関する持論
タスクマネージャー(タスクの生成、削除を管理するもの)(このソースではDKC_TASK_ENGINE構造体)
タスク(一つの処理)(このソースではDKC_TASK構造体)
タスクマネージャーがタスクを操作する形。
ここで、今までのタスク処理に関して多少不満があった。
- タスク処理は沢山タスクを一つのタスクマネージャーに登録するとデバッグしにくい。*1
- タスク処理は連結リストを使うのでイテレーションが遅いほうだ。
- 連結リストなのでシリアライズ、デシリアライズの実装が非常に面倒。
と言う事で、これらの解決案としては
- 一つのタスクマネージャーはタスクを管理できるのは255-256個にする。 \
また、一連のプロセスの流れに対してタスクマネージャーを一個割り当てるようにする。 \
これらのタスクマネージャーを断層構造にして処理をする方が分かりやすいと考える。
また、タスク処理はメモリ使用量を少なく済ませる事が美徳と考える私は
メモリ使用量をかなり少なめにする事にした。
メモリ使用量を少なくするには空き領域情報とかを無くせば良いと思うが、
その情報が無くなるといちいち線形探索である。
ここらへん、どーすれば良いかが良くわからない・・・。
ARRAY_ONEBYONEとか?
妄想メモ
- 通称、順序無しリスト(std::vectorのようなもの?)を使おうか?。\
http://www.aya.or.jp/%7Esanami/peace/memorial/code41-50.html#CODE44
- タスクワークのプールを外部にする事で、コピーのオーバーヘッドを抑える事が出来るのでは?
と、言う事で、考えてみた結果・・・。
決定事項
- 関数へのポインタが何もしない関数( Return() )の時のタスク領域は使用可能
以上。このような思想の元にタスクエンジンをくみ上げる事にした。