当 C 函数调用了 lu a_yieldk, 当前运行的协程会挂起, 启动这个线程的 lu a_resume 调用返回。
参数 nresults 指栈上需返回给 lu a_resume 的返回值的个数。
当协程再次被延续时, Lu a 调用延续函数 k 继续运行被挂起()的 C 函数。
延续函数会从前一个函数中接收到相同的栈, 栈中的 n 个返回值被移除而压入了从 lu a_resume 传入的参数。
此外,延续函数还会收到传给 lu a_yieldk 的参数 ctx。
通常,这个函数不会返回; 当协程一次次延续,将从延续函数继续运行。
然而,有一个例外: 当这个函数从一个逐行运行的钩子函数) 中调用时,lu a_yieldk 不可以提供延续函数。
(也就是类似 lu a_yield 的形式), 而此时,钩子函数在调用完让出后将立刻返回。
Lu a 会使协程让出,一旦协程再次被延续, 触发钩子的函数会继续正常运行。
当一个线程处于未提供延续函数的 C 调用中,调用它会抛出一个错误。
从并非用延续方式(例如:主线程)启动的线程中调用它也会这样。
这个函数等价于调用 l ua_yieldk, 不同的是不提供延续函数()。
因此,当线程被延续,线程会继续运行调用 l ua_yield 函数的函数。
返回保存在 Lua 内核中储存的版本数字的地址。
当调用时传入一个合法的 l。
a_State , 返回创建该状态机时的版本地址。
如果用 NULL 调用, 返回调用者的版本地址。
把给定索引处的值转换为一般的 C 指针 (void*) 。
这个值可以是一个用户对象; 否则, lu a_topointer 返回 NULL 。
不同的对象有不同的指针。
不存在把指针再转回原有类型的方法。
lu a_tolstring 返回一a 状态机中的字符串。
这个字符串总能保证 ( C 要求的)最后一个字符为零 ('\0') , 而且它允许在字符串内包含多个这样 因为 Lu a 中可能发生垃圾收集, 所以不保证 lu a_tolstring 返回的指针, 在对应的值从堆栈中移除后依然有效。
内容来自网友回答
集合票据是指(?)(含)以上、10个(含)以下具有法人资格的中小非金融企业,在银行间债券市场以统一产品设计、统一券种冠名...
集合票据是指( )(含)以上、10个(含)以下具有法人资格的中小非金融企业,在银行间债券市场以统一产品设计、统一券种冠名、统一信用增进、统一发行注册方式共同发行的,约定在一定期限还本付息的债务融资工具。 A.2个 B.3个 C.4个 D.5个 请帮忙给出正确答案和分析,谢谢!