예제 #1
0
Page* Cache::
getChangedPage()
{
    Monitor::Synchronized method(monitor);

    Page* page = changedList.getFirst();
    if (page)
    {
        page->addRef();
    }
    return page;
}
예제 #2
0
Page* Cache::
getStalePage()
{
    Monitor::Synchronized method(monitor);

    PageList::Iterator iter = changedList.begin();
    Page* page;
    while ((page = iter.next()))
    {
        if (PageTable::isLow() || page->isStale())
        {
            page->addRef();
            return page;
        }
    }
    return 0;
}