lua脚本中,f1()执行到异步点时,跳出,当异步f2()完成后,再回到跳回点继续f1(),这个

体怎样用协程实现?哪位大神教教我啊?
2025-05-22 23:32:14
推荐回答(3个)
回答1:

这样的话就不是异步咯

已经是同步了 

使用lua里的coroutine来执行

local co = coroutine.create(function ()
print(1234)
coroutine.yield()
print(2345)
end)
print(111)
coroutine.resume(co)
print(222)
coroutine.resume(co)
print(333)

看一下输出结果就会懂了

在运行到yield的时候 就是你所谓的跳出

当需要再跳回去的时候重新执行一下

coroutine.resume(co)

回答2:

由于Lua是单线程的, 因此Lua本身根本就没有异步这一说.
所以异步完成的功能需要右外部提供.

现在, 我们假定有一个外部提供的fx函数, 用于完成异步处理, 并且在处理完成后会调用f2来通知Lua.
那么在异步处理期间, Lua就必须等待,或者去处理其他内容.

loacl flag = false; -- 是否完成了异步处理

function f2()
flag = true;
end

f1大致如此:

fx(f2); -- fx完成时候调用f2
while not flag do
-- 一直等待直到异完成

-- 做一些事情
-- 如果f1是一个协程, 可以用yeild放弃执行
end

-- 异步完成后的事情

回答3:

你看清楚这是什么吧