Funkcja wykonująca się dopóki nie minie pewien okres czasu

0

Napotkałem się na taką funkcję, która wykonuję się przez podany okres czasu.

void zwloka(int sekund)
{
    time_t poczatkowy_czas = time(NULL);
    
    while(time(NULL) - poczatkowy_czas < sekund);
} 

Najpierw do zmiennej poczatkowy czas jest zapisywany aktualny czas, a potem w pętli while od "zaaktualizowanego" biężacego czasu odejmowany jest tamten poprzedni ? Dobrze to rozumiem ?

0

Dokladnie tak. Wlasnie taki zapis: a - b oznacza ze od wartości a odejmujemy wartosc b :)

1

to, że działa to tylko przypadek: http://www.cplusplus.com/reference/ctime/time_t/

For historical reasons, it is generally implemented as an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC (i.e., a unix timestamp). Although libraries may implement this type using alternative time representations.

Portable programs should not use values of this type directly, but always rely on calls to elements of the standard library to translate them to portable types.

Dla C++11 jest: http://www.cplusplus.com/reference/thread/this_thread/sleep_for/

0

Ta funkcja jest z Symfonii C++ Standard

0

Do odczekania zawsze używaj funkcji typu wait, sleep, select (zależny na co się czeka i pod jakim systemem), nigdy nie aktywne czekanie, bo zabierasz niepotrzebnie czas procesora...

0

@kaczus, z tym "zawsze" i "nigdy" bym uważał. Są pewne sytuacje, w których tego typu czekanie/spinlock (albo podejście hybrydowe) jest lepszym rozwiązaniem (gdy context switching może zabrać więcej czasu; gdy implementujemy pewne mechanizmy synchronizacji itd).

1 użytkowników online, w tym zalogowanych: 0, gości: 1