今日の雑記

生きることでいっぱいいっぱい

「まあ、確かに存在はするんだけど」と書いておきながら具体例を出さないのはアレなので、簡単に。
例えば、ゲームを制御するための「gctrl」というタスクがあったとしよう。


void gctrl(int id)
{
switch(TskBuf[id].step){
・・・<略>・・・
}
}
まあこんなタスクというかメソッドがあるんだけど、これってゲーム中に一つしか必要ないし、二つあったら困る訳です。
具体的にこのタスクはなにやってるかというと、

  1. 全ての初期化
  2. タイトル起動
  3. 待機
  4. ゲーム開始&初期化
  5. ゲーム中処理(ゲームによってはステージ処理など)
  6. ゲームオーバー監視
  7. ゲームオーバー処理
  8. (必要なら)ランキングやスコア保存などの処理
  9. タイトルに戻る

みたいな事をやってます。これが二つ以上起動してるって事はつまり、ねえ。
でもまあ、こんなタスク多重登録することはないんですよね。だって、「他のタスクから登録されっこない」タスクだから。通常はメインループ前に一回登録されておしまい、って感じですよね。
なので、タスク、特に「ゲーム」でのタスク登録って、特にシングルトンなタスク(ってこの表現正しいのかしら?)はかなり特殊なタスクなので、作ってる側もそのことを意識してる場合が多いので、あまり問題になら無いよなあ。では「タスクを使う」上で「シングルトン的に気をつけなければならない事例」っていったい何だろうか?という話になって「あーまーじゃあいいや」という感じでオシマイ、となってしまうんですよね。
って、「いいやー」と言っておきながら結構書いちゃった。本編そっちのけで。
シングルトンについて興味がある方は「BINARY HACKS」を読んでください(軽い宣伝のつもり)。