0

我们有一个解码函数,它在自己的线程中运行以执行其工作。执行时间通常远低于定义的超时值,但在某些情况下可能需要更长的时间才能完成。因此需要有一个超时,以确保这个函数不会对程序的其余部分造成额外的延迟。

这目前正在 Windows 操作系统上开发,但我也在寻找一种适用于 Linux 的便携式解决方案。

到目前为止,该实现在解码函数中进行了多次检查,以查看它是否还有时间继续或中止处理。这是定义。不是很好的做法,我正在考虑改进这一点。

我知道 boost 提供了这样的功能,但我们在这个项目中没有使用 boost。

4

2 回答 2

3

这是 Herb Sutter 关于这个主题的一篇优秀文章。结论是:您当前的方法是可以的。只需让您的解码线程定期检查它们是否超时。重要的是要平衡检查的频率。

于 2012-08-17T11:15:51.177 回答
0

一种方法是设置超时标志以指示线程实例不报告任何完成,不继续并尽快删除/终止自身。将其优先级降到最低,然后忘记它。立即创建另一个线程对象,覆盖旧的实例值,并使用新的线程实例进行后续解码。

最低优先级的孤立线程最终会在最终检查其自杀标志时自行消亡。

于 2012-08-17T12:02:07.667 回答