我有三个Linux盒子,每个盒子都运行我的程序。
程序需要定期调用某个回调,并且每个调用必须在三个框中的完全相同的时间进行。除了通话之外,我不需要任何其他同步。
如果有帮助,这三个盒子的时钟由NTP同步(其中一个盒子是主盒子)。
有没有办法以高精度完成这项工作?优选非Linux特定的。为简单起见,即使之前的呼叫尚未完成,也必须每N ms调用一次回调。
答案 0 :(得分:1)
如何提前发送执行函数的请求,包括应该执行函数的时间戳?接收应用程序将休眠/等待剩余时间(由于延迟而丢失一些时间),然后在您请求的精确时间戳执行该功能。
如果被调用函数本身花费的时间超过了你的间隔,你应该考虑使用线程。如果函数执行得很快但是结果的传输需要更长的时间,那么你应该使用类似select()
的东西而不需要额外的线程。