Я пытаюсь вызвать метод f()
каждый t
время, но если предыдущий вызов f()
еще не закончен, подождите, пока он не закончится.
Я немного читал о доступных таймерах, но не смог найти хороший способ делать то, что хочу, за исключением того, что вручную записывал все это. Любая помощь о том, как достичь этого, будет оценена, хотя я боюсь, что не смогу найти простое решение с использованием таймеров.
Чтобы уточнить, если t
равна одной секунде, а f()
выполняет произвольные длительности, которые я написал ниже, затем:
Step Operation Time taken
1 wait 1s
2 f() 0.6s
3 wait 0.4s (because f already took 0.6 seconds)
4 f() 10s
5 wait 0s (we're late)
6 f() 0.3s
7 wait 0.7s (we can disregard the debt from step 4)
Обратите внимание, что характер этого таймера заключается в том, что f()
не требуется быть безопасным в отношении повторного входа, и пул потоков размером 1 здесь достаточно.