【问题标题】:Periodic execution of a pthread with limited cpu time以有限的 cpu 时间定期执行 pthread
【发布时间】:2013-05-19 04:45:28
【问题描述】:

我在 Linux 上,用 pthread 做 C++,一切都在 SCHED_RR 上。到目前为止,一切似乎都运行良好。现在我有一个线程可以进行永无止境的计算,可以说它不断更新某物的状态。我希望它执行,假设每 10 毫秒执行一次,时间不超过 1 毫秒。甚至有可能做到这一点吗?

【问题讨论】:

  • 是的,使用实时系统

标签: c++ linux pthreads real-time


【解决方案1】:

是的。该线程可以:

  1. 因此使用合适的信号处理程序设置和报警 1ms
  2. 开始工作
  3. 当警报响起时,信号处理程序设置一个条件 让计算停止
  4. 处理程序返回后,计算继续,但会在观察到设置了停止条件时尽快停止
  5. 睡眠 9 毫秒。

或者(并且更容易)您可以将线程的优先级设置得更低。这将导致操作系统仅在没有更重要的事情发生时才安排您的计算线程。唯一的难点是确定优先级值的大小是否意味着或多或少的重要......

【讨论】:

  • 你说得对,你的提议是可能的。问题是,如果计算的单次迭代花费的时间超过 1 毫秒,则很难实现。第二个建议使用低优先级,不保证线程在预定义的时间运行,并且只运行预定义的时间量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2010-09-19
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多