Skip to content

What happens when millis() overflows? #45

Description

@julioj4pa

I'm developing opens source project to sustentable agriculture.
I want to know what happens when millis() overflows...

If I need to remove all threads -> reset millis() -> addition all threads back to ThreadController in main code.

Thank you and congratulation for awesome library.

Activity

  1. julioj4pa commented on Feb 1, 2020

    @julioj4pa
    Author

    @gregkrsak thank you for reply.

    My doubt is I need to controll it in my main code?
    I'm a newbie, sorry.

    Library code....
    bool Thread::shouldRun(unsigned long time){
    // If the "sign" bit is set the signed difference would be negative
    bool time_remaining = (time - _cached_next_run) & 0x80000000;

    // Exceeded the time limit, AND is enabled? Then should run...
    return !time_remaining && enabled;
    

    }

  2. julioj4pa commented on Feb 1, 2020

    @julioj4pa
    Author

    I think it doesn't have any problem because.
    _cached_next_run is unsigned long too.

    So when
    void Thread::runned(unsigned long time){
    // Saves last_run
    last_run = time;

    // Cache next run
    **_cached_next_run = last_run + interval;**
    

    }

    _cached_next_run restarts too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions