思うだけで学ばない日記 2.0

思うだけで学ばない日記から移転しました☆!よろしくお願いします。

タスクシステムめどい

【タスクシステムとは】

呼び出されるたびに作業を1ステップだけ進めてすぐ戻る、という風に処理が記述されたサブルーチン群を順次呼び出し、それを繰り返すことで複数作業を擬似並列的に遂行するディスパッチメカニズム。詳細な解説

【特徴】

  • 作業を構成する手続とデータのうち、前者を上記サブルーチン、後者をタスクコントロールブロック(TCB)のワークエリアが受け持つ
  • 作業には順序関係が与えられ、明示的に変更しない限り、毎回必ず同じ順で処理(サブルーチン-TCB対の選択とサブルーチン呼び出し)が行われる
  • 作業は追加したり削除したりできる
  • 作業の削除によって空いたTCBを別の作業のために使いまわせる

【長所】

  • 省メモリ

【弱点】

  • 一つながりの作業を細かく分解してFSM的に記述せねばならない
  • 作業の処理順が一定であるゆえに、2つ以上の順序要求を満たすには別途工夫が必要

例えば、親分と子分というキャラクタを画面上で動かしたいのだけども、

  1. キャラの重ね合わせの都合で子分→親分の順で描画したい
  2. 親分の最新の座標をもとに子分の位置を決めたいので、親分→子分の順で描画位置を計算したい

という2つの要求があったりすると、タスクシステムだけではもうだめ*1

【解決策】

  • マイクロスレッド+それっぽいディスパッチャ+スレッド間同期機構(必然的にTCB')、、

(考えちう。。)

*1:nパス方式にすればあるいは、だが。。