eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingStruktura do przydzielania numerkówRe: Struktura do przydzielania numerków
  • Data: 2015-12-07 01:05:49
    Temat: Re: Struktura do przydzielania numerków
    Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2015-12-06 o 17:26, bartekltg pisze:
    > Czasowo jest gorsze.
    > Pamięćiowo najprawdopoobnij też (ile na raz okien będzie otwartych?),
    > a te dodatkowe 32 bity chyba nie są takim wqielkim narzutem, skoro
    > jadna liczba przyopada na okno (bardziej skomplikowaną strukturę).
    >
    > Nie mówiąc o tym, że trudniejsze do napsiania;-)

    A to za to bardzo proste:
    yAllocFifo::yAllocFifo(const uint32_t base, const uint32_t count)
    {
    alloc_base = base;
    alloc_count = count;
    sentinel = base + count;
    nextNumber = base;
    }

    uint32_t yAllocFifo::getNumber()
    {
    if (fifo.canPop()) return fifo.pop();
    else
    {
    if (nextNumber >= sentinel) throw exception("no more nmbers");
    nextNumber++;
    return nextNumber-1;
    }
    return 0;
    }

    void yAllocFifo::releaseNumber(uint32_t number)
    {
    if (number < alloc_base)
    throw exception("releaseNumber: bad number, too small");
    if (number - alloc_base >= alloc_count)
    throw exception("releaseNumber: bad number, too big");
    fifo.push(number);
    }


    tylko nie sprawdza nic przy release, np. gdy zwalniamy już zwolnione to
    wtedy doda dwa razy, albo zwalniamy zupełnie inny numer, którego nie
    wzięliśmy.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: