TeaHoney
TeaHoney

Reputation: 150

Timing commands in cpp project (windows)

I hope someone could help me with this (And english is not my native language so I'm sorry in advance for any grammar or spelling mistakes):

As part of a project I'm coding, I need to time some commands. More specifically: I have 2 sets of commands (Lets call them set A and set B) - I need to to execute set A, then wait for a specific number of milliseconds (calculated in set A), then execute set B. I did it using the Sleep(time) command between the sets.

Now, I need to incorporate another set of commands (Set C) that will run in a loop in the time between the sets A and B instead of simply doing nothing. Meaning, instead of the time the program was idle before (waiting the specified number of milliseconds) I need it to loop the C set - but the catch is that it has to loop C exactly the same time it would have waited in the idle time.

How can I do this without using threads? (And generally keep it as simple as possible)

Upvotes: 2

Views: 121

Answers (1)

Arno
Arno

Reputation: 5194

I guess the "work-time" for the set of commands in C is known. And C is a loop which can/shall finish when the wait time has expired.

In this case I'd suggest to use a performance counter to count down the wait time. Depending on what is calculated and what overhaed is introduced in C the accuracy to obtain can be in the microseconds range.

Pseudo code:

Delay = 1000
Do A
CounterBegin = GetCounter()
// and now the C loop
while ((GetCounter() - CounterBegin) < Delay) {
   Do C
}
Do B

Note: The counter values are to be converted into times by using the counter frequency. See the link above to get the details.

Upvotes: 1

Related Questions