Luabind和协程

我在使用 luabind 时遇到了一些困难,不理解如何正确地使用协程。有一个模板函数:

template<class Ret>
Ret resume_function(object const& obj, ...)

其中 (Ret) 应该包含 Lua 传递给 yield 的值。

我当前的困惑点是:

  • 如果函数返回而不是调用 yield,会发生什么?resume_function 返回函数的返回值吗?
  • 如果您预先不知道将传递哪些(或多少)参数给 yield,该如何使用此函数?例如,如果有多个可能的 yielding 函数,该函数可能会调用哪个函数。
  • 如果传递多个值给 yieldRet 的类型是什么?

我是否完全误解了所有这些内容?在 Lua 方面,我想象的是这样的:

local img = loadImage("foo.png")

loadImage 将是一个 C++ 函数,它请求在一个不同的线程中加载图片,然后调用 lua_yield,一段时间后使用 img 作为参数调用 luabind::resume_function

我应该将 "foo.png" 作为参数传递给 yield 吗?还是在调用 yield 之前将其传递给另一个函数,然后再也不将任何值传递给 yield?什么是正确的结构?我显然在某些地方存在误解。

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

点赞