情况就是这样,我正在编写代码战竞赛的框架。随着代码的运行,对于每一轮,它都会调用每个参赛者提供的库中的一个方法。比赛的规则是方法必须在 1 秒内返回,否则我们会杀死调用它们的任务。然后,我们对该回合使用默认结果。
该方法不支持取消,因为我们不能相信被调用的代码会响应取消。而且我们需要终止线程,因为如果我们有 10 或 20 个被忽略的后台任务,那么所有向前的调用将为每次调用提供更少的时钟周期,而以前花费不到 1 秒的方法现在需要更多。
从好的方面来说,我们正在杀死的方法应该没有打开任何资源等,因此中止不应该留下任何悬而未决的东西。
更新:这里要记住两件事。首先,这就像一场游戏——所以性能很重要。其次,工作线程不太可能打开任何资源。如果调用的方法之一过长,我需要中止它并快速继续。