为什么线程状态是死的



这就是问题所在。我使用线程调用了一个函数,但是当我返回到主控制时,main在几分钟内就进入了睡眠状态。

示例(Look在这里是调用Win32API函数GetMessage的行):

Start()
e = Thread.new { Look() }
for _i in 0..1000
    puts e.status
end

这段代码应该打印e的状态1000次,但它只打印一次。我找不到一个合理的错误。Look不返回,直到它得到一个消息,所以我怀疑这可能会导致一个错误。

我猜e的状态是nil, puts显示为空字符串。

nil状态表示线程异常终止。

不管有什么问题,你的代码打印了 1000次,你应该在puts中放一些可见的文本来显示。

另外,与其使用一个一次性变量_i,不如写

1000.times do
    puts e.status
end

我解决了,谢谢你的帮助。错误在于我只需要为PeekMessage更改GetMessageA所以线程不会解释这是dead jeje

。代理

最新更新