我需要你的帮助。我在一个程序上工作,应该用25fps抓取图片并用每张图片20ms编辑它们。我为此构建了一个示例程序,它在for循环中经历了一个while循环(工作时间大约是19-20 ms,这没关系)。然后我穿上了整个Thing并且必须变得稳定。我必须在同一时间使用12个线程。 问题出在我的评估中,在8小时的测试中,我变成了3-5个30-40毫秒的值,我不知道为什么。 我已经用c ++ 11并行化线程尝试了整个Thing,并成为相同的时间值。 我在带有2个处理器和16个CPU的戴尔服务器上工作。 谢谢你的帮助。
答案 0 :(得分:1)
这里的问题是Windows(以及大多数Linux变体)不是real-time operating system。因此,您无法保证一致的最长任务时间。任何外部输入都可能会使您的线程持续很短或更长的时间。即使您将线程工作时间降低到1-2毫秒,您仍然可能会遇到>运行时间为20毫秒。您的解决方案是:使用实时操作系统或制定允许周期性更长延迟的规定(这更像是一个设计问题)。