タスクシステム総合スレ part4
■ このスレッドは過去ログ倉庫に格納されています
0049名前は開発中のものです。
2009/02/05(木) 00:31:46ID:9DTLfrVWboost::shared_ptrとかunordered_mapとか実装が近代的というだけで、
やってることは古典的だよね(そういう趣旨だから当然だけど)。
ってことで、Mix-in好きのオレが近代的なタスクを考えてみた。
古典的タスクシステムをupdate巡回リストであると仮定すると、
タスクとはすなわちフレームをまたいだ継続的処理の抽象化だと考えることができる。
継続処理を今風に考えれば以下の3種類に分かれるはずで、
どれが良いかはケースバイケースで異なる。
//(1)毎フレーム呼ばれる古き良きタスク(負荷が小さい。排他処理不要)
class PeriodicalTask {
public:
virtual void update() = 0;
};
//(2)コルーチン動作するタスク(負荷は中程度。排他処理不要)
class CooperativeTask {
public:
CooperativeTask(size_t stackSize);
virtual int call() = 0;
};
//(3)ネイティブスレッド動作するタスク(負荷が大きい。排他処理必須)
class PreemptiveTask {
public:
PreemptiveTask(size_t stackSize);
virtual int start() = 0;
};
■ このスレッドは過去ログ倉庫に格納されています