回答
没有一般情况下的算法,可以确定某个程序是一个无限循环或并不适用于所有turing complete语言,这基本上是Halting Problem。
证明它的想法很简单:
- 假设你有这样的算法
A
。 - 构建一个程序
B
,它自己调用A
[在B
]。 - 如果
A
答案“程序将停止” - 做一个无限循环 - 别的[
A
答案B
不会停止 - 停止immidiately
现在,假设你调用A
上B
- 答案将会明确错误,因此A
不存在。
注:以上不是正式的证明,只是它的一个简图。
好吧..如果您说要遍历连接到同一行的某一点的长数据,那该怎么办。这是一个特定的停机问题,或者你有任何关联的算法来解决它? – 2012-03-16 14:07:38
@PankajGupta:如果我没有弄错 - 对于每个程序'A',都有一个程序'B',可以确定是否会停止。没有**一般情况下**算法,可以确定程序是否暂停 - 对于**所有程序**。 – amit 2012-03-16 14:10:54
正如其他人所写,无法确定。
但是,如果您想进行一些检查,则可以使用WatchDog设计模式。 这是一个单独的线程,用于检查任务是否仍处于活动状态。你自己的线索应该定期发出一个信号,说它还活着。确保这个信号没有设置在你的(无限)循环中。
如果没有信号,则程序处于无限循环内或已停止,并且看门狗可以对其执行操作。
- 1. 无限循环?
- 2. 无限循环:
- 3. 无限循环
- 4. 无限循环
- 5. 无限循环
- 6. 无限循环
- 7. 无限循环
- 8. 无限循环
- 9. (?无限)循环
- 10. 无限循环?
- 11. 无限循环...?
- 12. 无限循环
- 13. 无限循环
- 14. 无限循环
- 15. 无限循环
- 16. 无限循环的确认
- 17. 重定向无限循环
- 18. 无限FOR循环
- 19. super()无限循环
- 20. Flexslider无限循环
- 21. mod_write无限循环
- 22. 无限while循环
- 23. A *无限循环
- 24. 从无限循环
- 25. Prolog无限循环
- 26. Haskell无限循环
- 27. 无限“for”循环
- 28. python无限循环?
- 29. 无限循环UI
- 30. 无限循环UITableView
我的猜测是计算机无法识别某些东西是无限循环。你必须了解它作为一名代码工程师。 – darijan 2012-03-16 14:01:41
但是,如果发生这样的事情,一些智能语言编译器会理解并让你走出循环。 – 2012-03-16 14:03:23
这很简单,只需等待无穷大,看看程序是否已经终止。 – aioobe 2012-03-16 14:03:43