example sleep calculation
#include <iostream>
int main() {
unsigned sleep_per_bucket = 67;
double result = 20000 * (static_cast<double>(sleep_per_bucket) / static_cast<double>(1000));
unsigned sleepable = static_cast<unsigned>(result);
std::cout << "Sleepable for =" << sleepable << std::endl;
while(sleepable)
{
unsigned sleptFor = 0;
if(sleepable >= 1000) {
sleepable -= 1000;
sleptFor = 1000;
} else {
sleptFor = sleepable;
sleepable = 0;
}
std::cout << "slept for ms="
<< sleptFor
<< ", remaining ms=" << sleepable
<< std::endl;
}
}
/*
Sleepable for =1340
slept for ms=1000, remaining ms=340
slept for ms=340, remaining ms=0
*/