今日の作業

新スケジューラの実装開始。
いろいろ気が散ってなかなか進まず。
自分は集中力がないのが大きな弱点だ。

class Scheduler2
{
public:
    Scheduler2();
    virtual ~Scheduler2();

public:
    bool Schedule1();
    bool Schedule2();


protected:
    void SetPriority(Thread* thread);
    void WakeupTimer();
    void WakeupTimer(Thread* thread);
    bool SetNextThread();


    inline void RemoveAdd(Array<Thread*> queue, Thread* thread)
    {
#if 1
        if (thread->priority >= queue.getLength() || thread->priority < 0)
        {
            panic("Scheduler:RemoveAdd index out");
        }
#endif
        thread->remove();
        queue[thread->priority]->addToPrev(thread);
    }

protected:
    Array<Thread*> runq;
    Array<Thread*> waitq;
    dword tickTotal;
};