gpt4 book ai didi

c - 在多线程服务器程序中使用 linux 信号处理程序实现每 25 毫秒执行一次浮点计算的程序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:39 25 4
gpt4 key购买 nike

我的目标:我需要计算我系统的新控制输入,并在精确的采样时刻更新我正在编程的机器人的位置。

问题背景:我有一个功能正常的服务器程序,可以为多个客户端提供服务,并且可以进行简单的机器人操作。为此,我有两个线程,一个用于控制机器人,一个用于为多个客户端提供服务。现在我需要在精确的样本时刻实现更复杂的群体算法。我已经成功编写了一个副程序(使用 setitimer() ),它使用 SIGVTALRM 每 25 毫秒中断一次。

现在我需要关于如何最好地进行设计的建议。我主要担心的是如何在信号处理程序中执行算法,因为由于多线程和信号安全功能,它必须满足许多约束。

很抱歉解释太长,但我觉得一个好的解释会产生一个好的答案。

感谢您的宝贵时间!

最佳答案

正如您所指出的,在信号处理程序中进行任何类型的工作都是令人恼火的。为了避免刺激,我会产生另一个线程(如果你有足够的空间),并让该线程在信号量上等待。然后,您可以从信号处理程序发送到该信号量以唤醒您的处理线程。

这仍然会受到调度程序的影响,我不确定(没有做一些测试)这是否能够满足您的 100us 截止日期,但值得一试。

关于c - 在多线程服务器程序中使用 linux 信号处理程序实现每 25 毫秒执行一次浮点计算的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41022364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com