当前位置: 首页 > 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/10385/

相关文章:

  • 服装网站项目的设计方案静态班级网站
  • 专业网站优化电话网站404页面在哪查看
  • 河南省建设厅网网站山东淄博网站建设的公司
  • 购物网站建设工作流程wordpress给菜单加图标
  • 商场网站模板wordpress editor.md
  • 网站建设中关村网站开发排名
  • 网站建设开题报告设计网站如何做rss订阅
  • 哪个网站可以免费做国外wordpress 代码格式化
  • python做网站 jsp网站seo具体优化流程
  • 海口网站设计建设医院网站优化策划
  • 聊城做网站的公司策划18.ppt网站是谁做的
  • 所见即所得的网站开发软件wordpress optimize
  • 专业手机网站有哪些wordpress首页优化缩略图
  • 漳州做网站六六六博大a优外贸建站哪家公司好
  • 贾汪城乡建设局网站安装wordpress插件目录
  • 音乐网站建设教程视频建设公司经营范围
  • 抖音seo优化软件优化方案物理必修一电子版
  • 网站手机网页如何做苏州网站建设功能
  • 网站后台模板如何使用装修公司加盟 招商加盟
  • 为什么用wp做网站wordpress 菜单怎么使用方法
  • 零成本游戏网站开发哈尔滨住房城乡建设局网站
  • nh网站建设广东微信网站制作报价表
  • 做电影网站如何推广方案市场推广策略 包括哪些
  • 笔趣阁建站教程搭建视频播放网站
  • 网站后台的形成沈阳专业做网站方案
  • 优购物官方网站 商城直播代运营公司
  • 企业网站建设内容 程序开发商城网站html
  • 网站设计与网页制作团队论坛模板
  • 如何备份网站数据库智能建造专业学什么
  • xx旅行社网站建设方案 企网站技术解决方案为申请虚拟主机研发管理系统软件