协同线程与协同函数

📅 2026/6/26 3:20:25
协同线程与协同函数
Lua中有一种特殊的线程称为coroutine协同线程简称协程。其可以在运行时暂停执行然后转去执行其他线程然后可以返回再继续执行没完成的内容。即可以“走走停停停停走走”。任意时刻只会有一个协程执行不会出现多个协程同时执行的情况。协同线程的类型为thread其启动、暂停、重启等通过函数来控制具体方法如下-- 创建一个协同线程实例 co coroutine.create(function(a,b) print(a,b,ab) -- 获取正在运行的协同线程实例 local co coroutine.running() -- 输出协同线程实例的状态 print(coroutine.status(co)) -- 将当前协同线程挂起 coroutine.yield() print(协同线程恢复了) end) -- 启动协同线程 coroutine.resume(co,1,2) -- 输出协同线程的状态 print(主线程查看协同线程状态..coroutine.status(co)) -- 恢复协同线程的运行不传后面的参数了因为协同线程已经挂起了 coroutine.resume(co) -- 输出协同线程的状态 print(主线程查看协同线程状态..coroutine.status(co))运行结果如下协同函数协同线程可以单独创建执行也可以通过协同函数调用启动执行。使用coroutine的wrap函数创建的就是协同函数类型为function。协同函数的调用会启动其内置的协同线程。-- 创建一个协同函数 co coroutine.wrap(function(a,b) print(a,b,ab) local co coroutine.running() print(coroutine.status(co)) coroutine.yield() print(协同线程恢复了) print(a,b,ab) end) -- 调用协同函数启动协同线程 co(1,2) co()运行结果如下文件IO文件IO的函数分为两类静态函数与实例 函数。静态函数通过io.xxx()方式对文件进行操作。