Как вызвать метод/функцию 50 раз в секунду, а затем вычислить затраченное время. Если затраченное время меньше одной секунды, тогда спящий (1 раз) секунд.Как вызвать метод/функцию 50 раз в секунду
Ниже приведен псевдокод
while(1)
{
start_time = //find current time
int msg_count=0;
send_msg();
msg_count++;
// Check time after sending 50 messages
if(msg_count%50 == 0)
{
curr_time = //Find current time
int timeSpent = curr_time - start_time ;
int waitingTime;
start_time = curr_time ;
waitingTime = if(start_time < 1 sec) ? (1 sec - timeSpent) : 0;
wait for waitingTime;
}
}
Я новичок с Timer API. Может ли кто-нибудь помочь мне, какие API-интерфейсы таймера, я должен использовать для достижения этого. Мне нужен переносимый код.
Насколько точны вы хотите быть? Вы уверены, что ваша обработка ('send_msg', которая, возможно, может блокироваться) всегда занимает гораздо меньше 20 миллисекунд, т. Е. Период для 50 Гц? –
Возможный дубликат функции [C++ Timer для обеспечения времени в секундах nano] (http://stackoverflow.com/questions/275004/c-timer-function-to-provide-time-in-nano-seconds) – Joe