在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~
答案:3 悬赏:30 手机版
解决时间 2021-03-02 06:04
- 提问者网友:謫仙
- 2021-03-01 16:25
在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-03-01 16:53
for 循环在C中可能存在死循环
在lua里for不会存在死循环 你可以写一个例子
for i = 1,5 do
print(i)
end
会输出1 2 3 4 5
但是
for i = 1,-1 do
print(i)
end
就不会输出
这是一般型的for
如果是泛型for会有可能存在死循环
要检查死循环只能自己判断 比如做个计数器 循环大于10万次 则退出循环 并且抛出错误
local count = 0
while true do
dosomething()
count = count + 1
if count > 100000 then
error("无法退出的死循环")
end
另:不推荐楼上的方法 因为lua本身的设计就是不支持多线程的
end
在lua里for不会存在死循环 你可以写一个例子
for i = 1,5 do
print(i)
end
会输出1 2 3 4 5
但是
for i = 1,-1 do
print(i)
end
就不会输出
这是一般型的for
如果是泛型for会有可能存在死循环
要检查死循环只能自己判断 比如做个计数器 循环大于10万次 则退出循环 并且抛出错误
local count = 0
while true do
dosomething()
count = count + 1
if count > 100000 then
error("无法退出的死循环")
end
另:不推荐楼上的方法 因为lua本身的设计就是不支持多线程的
end
全部回答
- 1楼网友:过活
- 2021-03-01 18:31
应该不可以。因为死循环自己是检测不出来的。除非是在独立线程中,然后有主线程检查,但是如果主线程死循环,就无法检测了。一般操作系统也是根据一个程序占用太多cpu时间来判断的。
你问的这个问题有点像“停机问题”
你问的这个问题有点像“停机问题”
- 2楼网友:詩光轨車
- 2021-03-01 16:59
--[[Lua的话,for有3个参数:起始值、终止值、步进。
举个例子:--]]
for i = 1,-1 do
print(i)
end
--不会输出
for i = 1,-1,-1 do
print(i)
end
-->1
-->0
-->-1
--[[
只是做点补充。现在回答LZ死循环问题:
如果死循环的话,一般就是递归死循环和while死循环……至于r神马的一般不会用
while 布尔表达式 do
语句
end
所以只要检查一下布尔表达式【有木有可能】为false……如果不可能,那么就是死循环;
另一种例如function h() h() end不用管他,Lua该溢出时会溢出、
按检测时间来算,那就是
n=os.time()
循环体……
if os.time()-n>30 then break end
循环体……
--]]
举个例子:--]]
for i = 1,-1 do
print(i)
end
--不会输出
for i = 1,-1,-1 do
print(i)
end
-->1
-->0
-->-1
--[[
只是做点补充。现在回答LZ死循环问题:
如果死循环的话,一般就是递归死循环和while死循环……至于r神马的一般不会用
while 布尔表达式 do
语句
end
所以只要检查一下布尔表达式【有木有可能】为false……如果不可能,那么就是死循环;
另一种例如function h() h() end不用管他,Lua该溢出时会溢出、
按检测时间来算,那就是
n=os.time()
循环体……
if os.time()-n>30 then break end
循环体……
--]]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯