Lua 协程和线程区别

协程就是协程,不是线程。

CPU执行单位是线程,不是什么协程。

协程,是同步执行,不是并行,只是切了一个上下文了,为你保存原来的上下文而已。

切到第二个协程时,原来的协程处于挂起状态。

这个特指lua的协程。

Unity的协程也是这么回事。

lua协程例子:

local function run(data)

print("co-body", 1, data.a)

print("co-body", 2, data.a)

print("co-body", 3, data.a)

coroutine.yield()

print("co-body", 4, data.a)

print("co-body", 5, data.a)

coroutine.yield()

end

local co = coroutine.create(run)

local data = {a=1}

coroutine.resume(co, data)

for i=1,5 do

print("main", i)

end

coroutine.resume(co, data)

运行结果:

co-body 1 1

co-body 2 1

co-body 3 1

main 1

main 2

main 3

main 4

main 5

co-body 4 1

co-body 5 1

co-body 1 1

co-body 2 1

co-body 3 1

main 1

main 2

main 3

main 4

main 5

co-body 4 1

co-body 5 1