当前位置: 首页 > news >正文

制作手机网站用什么软件域名格式大全

制作手机网站用什么软件,域名格式大全,手机版网站开发价格,网站开发可以自学吗封装go函数用于创建并启动一个协程: ---go函数创建并启动一个协程 ---param _co_task function 函数原型 fun(_co:thread) function go(_co_task)local co coroutine.create(_co_task) -- 创建一个暂停的协程coroutine.resume(co, co) -- 调用coroutine.resume激活…

封装go函数用于创建并启动一个协程:

---go函数创建并启动一个协程
---@param _co_task function @函数原型 fun(_co:thread)
function go(_co_task)local co = coroutine.create(_co_task) -- 创建一个暂停的协程coroutine.resume(co, co) -- 调用coroutine.resume激活协程执行
end

封装项目中的异步函数用于成为协程函数:

---封装c_model.c_foo异步函数,成为协程函数
---@param _co thread @协程对象
---@return boolean,string
function co_foo(_co)c_model.c_foo(function(_ok, _result)coroutine.resume(_co, _ok, _result) -- 2. 回调函数被调用后,激活本协程继续执行,并把_ok和_result传递给yieldend)return coroutine.yield() -- 1. 主动放弃运行,本协程被切换出去
end

使用例子:

---通过顺序编写代码解决回调函数造成同块逻辑被撕裂的例子
---@param _co thread @协程对象
function test(_co)for i = 1, 10, 1 dolocal ok, result = co_foo(_co) -- co_foo函数会先yield切出,等内部回调被执行时再通过resume重新切回来继续执行print(ok, result)end
end-- 启动test协程
go(test)

封装defer用于处理协程的正常和异常退出:

首先定义defer函数,让它具备能够多次被调用的能力:

function defer(_co_wrap, h)table.insert(_co_wrap.defer_handlers, h)
end

同时定义co_error对象用于判断是否有错误:

---@class co_error
---@field ok boolean

定义invoke_defer_handlers函数来执行defer操作:

function invoke_defer_handlers(_co_wrap, _co_error)for i=#_co_wrap.defer_handlers, 1, -1 dolocal h = _co_wrap.defer_handlers[i]xpcall(h, function(err) print(err) end, _co_error)end
end

定义coroutine_resume函数来处理协程的异常退出:

function coroutine_resume(_co_wrap, ...)local ok, errmsg = coroutine.resume(_co_wrap.co, ...)if not ok theninvoke_defer_handlers(_co_wrap, {ok=false}) -- 异常退出end
end

定义go函数来处理协程的正常退出:

function go(_co_task)local co = coroutine.create(function(_co_wrap)_co_task(_co_wrap)invoke_defer_handlers(_co_wrap, {ok=true}) -- 正常退出end)local cowrap = { co = co, defer_handlers = {} } ---@type co_wrapcoroutine_resume(cowrap, cowrap) -- 初创建的协程是暂停的,手动触发执行
end

通过以上封装,可以在Lua中以类似Golang的方式编写协程代码。

协程间的通信暂时不需要在多线程中实现,因为项目中目前只有一个lua_state对象管理。

http://www.yayakq.cn/news/463787/

相关文章:

  • 域名注册哪个网站好抓取网站访客数据原理
  • 三亚房地产网站制作网业加速器
  • 做网站必须有主机吗tiktok跨境电商好做吗
  • 网站排名在哪里优化深圳宝安区是市中心吗
  • 如何在税局网站上做税种认定wordpress基础教程
  • 创建网站的软件网站建设报价表表格下载
  • 怎么做qq代挂网站用dw制作网页步骤
  • 如何开发网站平台开发app和微网站有哪些
  • 网站建设费算广告费吗网站开发 适应 手机 电脑
  • 做网站推广怎么跟客户沟通佛山做优化的公司哪家好
  • 织梦可以做论坛网站吗做婚礼策划的网站
  • 九九建站-网站建设 网站推广 seo优化 seo培训网站的建设和设计方案
  • 泉州做网站哪家好网页html代码
  • 重庆自助企业建站模板网站建设熊掌号里属于什么领域
  • 深圳做微藻的公司网站wordpress w3 total cache 编码错误
  • 网站的实用性定制开发电商网站建设多少钱
  • 无锡富通电力建设有限公司网站免费网站seo优化
  • 网站建设h5 招聘wordpress页面放文章
  • 做网站的技术哪个简单南京网站制作开发
  • 做离心开关的企业的网站媒体发稿公司
  • dede网站怎么做404页面seo网络优化师
  • 基于中小企业需求的电子商务网站建设广州白云区网站开发
  • 购买网店优化教程网
  • 淘客网站怎么做返利珠海网站建设哪家公司好
  • 网站的请求服务做优先级个人备案号 可以做游戏网站吗
  • 内容网站管理系统展厅设计制作
  • 网络舆情的网站网站 测速度
  • 电商网站开发流程list东莞的网站建设公司哪家好
  • 网银汇款企业做网站用途写什么北京网站设计有名 乐云践新
  • 常用的设计网站怎样做公司网站介绍