在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~
在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~RT若能给出例子追加15分~,谢谢各位大虾帮助~...
在C和LUA中如何检查死循环,可以使用FOR循环吗?如何使用?谢谢~RT若能给出例子追加15分~,谢谢各位大虾帮助~
展开
3个回答
展开全部
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
展开全部
--[[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
循环体……
--]]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该不可以。因为死循环自己是检测不出来的。除非是在独立线程中,然后有主线程检查,但是如果主线程死循环,就无法检测了。一般操作系统也是根据一个程序占用太多cpu时间来判断的。
你问的这个问题有点像“停机问题”
你问的这个问题有点像“停机问题”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询