-- 协程的创建--------------------
function func( )
print(123);
end
-- 1. coroutine.create( function )
co1 = coroutine.create( func );
print(type(co1));--thread
-- 2. coroutine.wrap( function )
co2 = coroutine.wrap( func );
print(type(co2));--function
-- 协程的运行---------------------
-- 1. 使用create创建的协程调用方法
coroutine.resume( co1 );
-- 2. 使用wrap创建的协程的调用方法
co2();--返回的是函数
-- 协程的挂起---------------------
function func( )
local x = 1;
while true do
print(x);
x = x + 1;
coroutine.yield(x);
end
end
-- yield()传入的参数会调用的时候返回出去。默认会返回一个调用是否成功的Boolean值。之后才是传入yield的值。
-- 调用一次就执行一次。wrap同。
co1 = coroutine.create( func );
isOk,value = coroutine.resume( co1 );--1
print(isOk,value);--true 2
isOk,value = coroutine.resume( co1 );--2
print(isOk,value);--true 3
co2 = coroutine.wrap( func )
print(co2());--2(不会返回调用情况)
-- 协程的状态----------------------------
-- api :coroutine.status( 协程对象 )
-- 3种状态 dead,suspended,running。
Lua学习笔记 协程
最新推荐文章于 2024-09-16 16:25:00 发布