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

做网站 前台和后台校园门户网站 建设方案

做网站 前台和后台,校园门户网站 建设方案,建设可以聊天的网站,免费网站建设ppt模板下载封装 go 函数 在 使用 Lua 协程处理异步回调函数 中已经介绍 这里简要列下#xff1a; 封装 go 函数---go 函数创建并启动一个协程 ---param _co_task function 函数原型 fun(_co:thread) function go(_co_task)local co coroutine.create(_co_task) -- 创建的协程是暂停的…封装 go 函数 在 使用 Lua 协程处理异步回调函数 中已经介绍 这里简要列下 封装 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使用例子---test顺序编写代码解决回调函数造成同块逻辑被撕裂的例子 ---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 的特点有以下 协程正常退出能被执行协程异常退出能被执行同个协程内可以多次调用 deferdefer 被执行时按出栈顺序被执行 defer 多次执行 首先定义 defer 函数让它具备能多次被调用 function defer(_co_wrap, h)table.insert(_co_wrap.defer_handlers, h) end因为要对 defer 的函数句柄做保持以便退出时执行。包裹了下 co 对象 ---class co_wrap ---field co thread ---field defer_handlers fun(_co_error:co_error)[]同时定义下让 defer 的函数知道是否有错误的对象 ---class co_error ---field ok booleandefer 被执行时按出栈顺序被执行 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协程异常时能被执行 Lua 协程异常通过 coroutine.resume 捕获并返回错误信息 因此主要封装下 coroutine.resume : function coroutine_resume(_co_wrap, ...)local ok, errmsg coroutine.resume(_co_wrap.co, ...)if not ok theninvoke_defer_handlers(_co_wrap, {okfalse}) -- 异常退出end end协程正常退出时能被执行 function go(_co_task)local co coroutine.create(function(_co_wrap)_co_task(_co_wrap)invoke_defer_handlers(_co_wrap, {oktrue}) -- 正常退出end)local cowrap { co co, defer_handlers {} } ---type co_wrapcoroutine_resume(cowrap, cowrap) -- 初创建的协程是暂停的手动触发执行 end以上就可以在 Lua 中完全 Golang 的方式编写协程代码了 协程间通信 由于项目中暂时是一根线程管理一个 lua_state 对象因此暂时无需求多线程中的协程间的通信需求 待续
http://www.dnsts.com.cn/news/60997.html

相关文章:

  • 漳州网站建设哪家最权威用了wordpress的网站
  • 水利建设与管理司网站建设小学瓯江校区网站
  • 快速建立平台网站开发建站教程详解网站分页导航
  • 东莞哪里有做网站的wordpress跳转设置
  • 设计素材网站推荐ppt平湖市住房建设局网站
  • 片头网站第三方电子商务平台的特点
  • 网站建设 10万元富顺住房和城乡建设厅网站
  • wordpress建2个网站网页布局分析
  • 自适应网站wordpress免费微网站建设平台
  • 电子外贸网站个人怎么做网页
  • 建设工程质量安全管理体系网站织梦书法网站模板
  • 合肥网站制作软件个人网站布局
  • 湘潭网络公司网站建设关于做网站的前言
  • 烟台网站建站腾讯人脸认证网站建设
  • 广州美容网站建设建网站 就能开店
  • 网站推广通常是从网站建设及运营彩票网站怎么样建设
  • 建站公司优化大师班级
  • 大学班级网站建设网站开发技术代码
  • 建站工具有哪些论坛擅自给公司做网站有什么责任
  • 网站制作职责怎么样自己建设一个网站
  • 建站之星网站建设下载版合肥做检查军大网站
  • 小说网站建设源码网站设计遇到难题
  • c语言除了做网站还能干什么苏州首页关键词优化
  • 购物帮做特惠的网站网站系统怎么用
  • 无锡网站托管山东建筑公司排名
  • 学校网站 模板阿里云突发性能适用于做网站吗
  • 网站建设公司销售提成昆明网站建设首选才力
  • 在网站怎么做收款二维码微信小程序开发公司
  • 模具机械设备东莞网站建设合肥网站定制开发公司
  • 建立网站域名的费用搭建网站 赚钱