Selenium自动化测试入门:环境部署与元素定位实战指南
2026/7/5 13:42:40
Lua 的 Coroutine(协程)是一种轻量级的线程,它允许程序在单个线程中实现多个执行流的协作式调度。与操作系统线程不同,协程是完全由用户控制的,在用户态进行切换,不需要内核参与。
co=coroutine.create(function()print("协程开始执行")end)coroutine.resume(co)-- 输出:"协程开始执行"co=coroutine.create(function()print("第一步")coroutine.yield()print("第二步")end)coroutine.resume(co)-- 输出:"第一步"coroutine.resume(co)-- 输出:"第二步"协程有以下几种状态:
suspended(挂起):刚创建或调用coroutine.yield后的状态running(运行):正在执行的状态dead(结束):函数执行完毕的状态可以通过coroutine.status(co)查询协程状态。
协程支持在coroutine.resume和coroutine.yield之间传递数据:
co=coroutine.create(function(x)print("收到:"..x)localy=coroutine.yield("返回1")print("收到:"..y)return"返回2"end)print(coroutine.resume(co,"输入1"))-- 输出:"收到:输入1" 和 "true 返回1"print(coroutine.resume(co,"输入2"))-- 输出:"收到:输入2" 和 "true 返回2"functionproducer()returncoroutine.create(function()whiletruedolocalx=io.read()coroutine.yield(x)endend)endfunctionconsumer(prod)whiletruedolocalstatus,value=coroutine.resume(prod)ifnotstatusthenbreakendprint("消费:"..value)endendconsumer(producer())coroutine.yield让出执行权coroutine.resume的返回值判断Lua 5.3+ 版本对协程做了优化,性能更好。在 LuaJIT 中协程的执行效率更高,适合高性能场景。