1
1
对于这种简单的情况,一个额外的监视线程可以根据需要分离出更多的线程是有帮助的。 基本上每N秒检查一次作业是否完成,如果没有,则添加另一个线程。 这不一定能处理更复杂的死锁问题,但它可以解决这个问题。 我对更严重的问题的建议是将等待限制到新生成的进程,换句话说,您只能等待您启动的某个东西,这样就永远不会出现死锁,因为在这种情况下循环是不可能的。 |
2
2
您可以重新设计一些东西,使foocommand不使用队列来运行barcommand,而是直接运行它,或者您可以将foocommand拆分为两部分,并在将barcommand排队后立即停止前半部分,并在完成foocommand的工作后让barcommand队列成为第二部分。 |
3
2
排队隐式地假定异步执行模型。通过等待命令退出,您可以同步工作。 也许您可以将命令分为三部分:执行到必须发送barcommand为止的foocommand1、barcommand,最后是在barcommand完成后继续执行的foocommand2。这三个命令可以单独排队。当然,barcommand应该确保foocommand2排队。 |
4
1
如果您自己构建队列对象,可以尝试以下几种方法:
|
5
1
我假设您希望将barcommand排队,以便它能够与foocommand并行运行,但是barcommand稍后将需要结果。如果是这种情况,那么我建议使用并行扩展库中的Future。 Bart Desmet有一个 good blog entry 对此。基本上你想做的是:
使用类似并行扩展的libararies,我可以避免“滚动您自己的”调度。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |