是否可以创建一个带有getter和setter的Luabind属性,这些属性在等待查询在另一个线程中执行时会产生?以下语法编译但似乎不起作用:
luabind::class_<Foo>("Foo")
.property("bar", &Foo::getBar, &Foo::setBar, luabind::yield)
将对象包装在Lua端并在常规函数周围添加属性包装器不是一个好选择,因为我需要在基类上定义这些属性,这需要为每个派生类重复包装代码。
答案 0 :(得分:0)
以下语法编译但似乎不起作用:
当然不起作用; luabind::yield
解决了不同的问题。 yield
告诉系统在函数完成后产生,而不是之前,当然不在它的中间。
你无法在C / C ++函数中屈服。 Lua 5.2增加了设置“恢复”功能的能力,但即便如此,在C ++代码中屈服也存在很大的危险,因为Lua通常不会清理堆栈。
你想要做的是在调用函数之前产生。它将等同于这个Lua代码:
function myGet(...)
local tester = StartAsyncAction(...);
while(~tester:IsFinished()) do
coroutine.yield();
end
return tester:Get(...);
end
你无法在C / C ++中真正模仿它;不是Lua 5.2。 Luabind并不完全支持新的5.2功能。