异步等待后无法使用lua_resume吗?

我有一些 Lua 脚本,其中包含一些长时间运行的任务,比如获取网页,所以我让它 yield (推迟执行),然后由 C 代码异步处理获取页面任务,以便线程可以执行其他任务,并在指定时间之后检查是否完成获取页面任务,如果完成,则恢复脚本。问题在于,线程无法在异步等待后恢复工作。

这是我从类中提取的代码,有点乱,抱歉:

原文链接 https://stackoverflow.com/questions/1781722

点赞
stackoverflow用户142075
stackoverflow用户142075

抱歉,这个问题不必在意。 lua_resume 返回 2 意味着错误,但脚本运行正常, asio 获取页面也正常。我追踪了导致 lua_resume 失败的那一行代码:

httpinfo.header.append(buffer, (HeaderEndIndex-buffer+2) );

如果我注释掉那一行,lua_resume 将按预期返回 0,即脚本退出。这一行并没有对 lua 线程状态 产生任何影响,只是一个字符串赋值操作。我检查过,没有溢出发生。这很奇怪。

2009-11-23 20:20:52