Задача · Многопоточность: обзор · урок 10 из 10
Задача: таймер обратного отсчёта
Напишите класс Countdown — таймер обратного отсчёта, поля добавьте сами. Конструктор Countdown(std::chrono::minutes limit) задаёт лимит времени, а метод void spend(std::chrono::milliseconds time) вычитает потраченное время из остатка. std::chrono::seconds remaining() const возвращает остаток в целых секундах, а bool expired() const сообщает, вышло ли время.
- для
Countdown c(1min):c.remaining()→60s - после
c.spend(20s)иc.spend(500ms):c.remaining()→39s - после ещё одного
c.spend(39s):c.remaining()→0s, аc.expired()→false
Ограничения: limit больше нуля, а time не меньше нуля. remaining() отбрасывает дробную часть секунды и при перерасходе возвращает 0s, а expired() возвращает true, когда от лимита не осталось ни миллисекунды.