搜索
aardio官方社区 门户 查看主题

怎么判断线程是否出错

发布者: xiaoqiang | 发布时间: 2011-10-5 09:27| 查看数: 6053| 评论数: 3|帖子模式

有时候程序运行的时候由于一些以外情况会发生错误终止,比如在多线程中,一个线程由于意外错误停止了。该怎么判断它错误停止?

最新评论

quicker 发表于 2011-10-5 09:47:38

[align=left][font=新宋体][color=#0000ff]var[/color][color=#000000] tHandle,tId = th

var tHandle,tId = thread.create(
   
function(){
        
error("出错",2)
    }
)

thread.wait(tHandle)

io.open()

if( thread.getExitCode( tHandle ) == -1  )
    io.print(
"线程出错了,线程ID:" + tId )
   
execute("pause");
我会回来 发表于 2015-12-17 22:33:28

thread.wait这个函数会阻塞程序运行,用这个函数的话很多时候会破坏掉使用多线程的初衷, 不知道有没有更好的办法。

thread.wait这个函数会阻塞程序运行,用这个函数的话很多时候会破坏掉使用多线程的初衷, 不知道有没有更好的办法。

点评

你这个说法是错误的,thread.wait可以在主线程忙完了有必要的时候再调用 - 不是一定要阻塞,而且用thread.waitOne在界面线程中也可以不阻塞的等待,这里只是用控制台程序举个例子而已  发表于 2015-12-18 00:01
我会回来 发表于 2015-12-17 22:42:35

据我研究, 可以使用thread.getExitCode来判断一个线程的状态。 线程正在运行时这个函数返回的值似乎是固定的259, 也许也可能是别的, 但是应该

据我研究, 可以使用thread.getExitCode来判断一个线程的状态。 线程正在运行时这个函数返回的值似乎是固定的259, 也许也可能是别的, 但是应该肯定是大于0的数字。如果线程因为出错意外结束, 返回值是-1。如果线程正常结束, 并且return了一个数字, 那么thread.getExitCode得到的值就是那个线程return的数字。

点评

线程如果没出错返回值应当保证大于0,259是_STILL_ACTIVE表示线程正在运行,也可以使用 thread.stillActive() 函数做相同判断,一个线程的状态是STILL_ACTIVE,不表示他后面不会出错,所以需要先 thread.wait()  发表于 2015-12-18 00:06

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-11-23 21:03 , Processed in 0.046875 second(s), 19 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表