nick
nick

Reputation: 663

real time intervals in C/C++

  1. It is possible to make real time intervals in not Real-Time Linux application in C/C++?

I'm writing a ADC simulator. This is an application that generates packages with certain frequency. It is important that the frequency of package generation as closely as possible corresponded to the sampling rate of ADC. Why I don't want to use sleep() and usleep() to set package generation time intervals.

Thanks.

Upvotes: 2

Views: 842

Answers (2)

Tony Delroy
Tony Delroy

Reputation: 106096

It is possible to make real time intervals in not Real-Time Linux application in C/C++?

No... if it were, it would be a Real-Time Linux system.

That said, you can probably get very close, so it depends on your intervals and tolerances. Your only serious option for sub-timeslice precision is to nail the sending thread to a core and let it spin, while keeping other processing off that core, but that's very wasteful of hardware....

If you can afford to have latencies long enough for your sending code to be re-scheduled then you can look at setting up alarms & signal handlers, but that's potentially massively higher latency, perhaps only on relatively rare occasions where the cores have all been otherwise utilised. To assess how well this works, you've got to do real measurements under realistic system loads.

Upvotes: 3

Yochai Timmer
Yochai Timmer

Reputation: 49251

The packet generator shouldn't be with the packet sender.
If you want the packets to be sent on time, you should create the packets before hand, and send them to the packer sender.

So you need a thread with a work queue, and use a sleep on that thread to send the packets on time. (you can look a boost's sleep())

Upvotes: 1

Related Questions