lua tasklib 之lumen 分析
sched.sleep分析 sleep会填充M.running_task.waitds数据表示当前task需要等待,最后yield出去到主线程 M.sleep = function (timeout)
local sleep_waitd = M.running_task.sleep_waitd
sleep_waitd.timeout=timeout
M.wait(sleep_waitd)
end M.wait = function ( waitd )
assert(M.running_task)
if waitd then
--in case passed a non created or joined waitd
if not M.running_task.waitds[waitd] then
waitd=M.new_waitd(waitd)
M.running_task.waitds[waitd] = true
end
。。。
return coroutine.yield( M.running_task.co ) 主线程不断调用step函数,该函数不断扫描是否有空闲的task,如果有就执行 M.step = function ()
。。。 --register all ready¬ waiting to run
--if find one waiting&timeouting, wake it --and finish
for taskd, _ in pairs (M.tasks) do
if taskd.status=='ready' then
if taskd.waitingfor then
local waketime = taskd.waketime
if waketime then
next_waketime = next_waketime or waketime
if waketime <= M.get_time() then
--emit_timeout
taskd.waketime, taskd.waitingfor = nil, nil
step_task(taskd, nil, 'timeout')
--return 0
end
。。。
socket封装分析??
如何把callback改装成coroutine??
lua tasklib 之lumen 分析的更多相关文章
- 某Android手游的lua源码逆向分析与还原
近日分析某一款Android上面的手游,反编译后再起asset目录下可以看到加密过的脚本,lib目录下发现lua的so 初步怀疑其使用lua脚本实现的 解密函数定位 动态跟踪解密函数流程 静态分析解密 ...
- 用lua编写wireshark插件分析自己定义的协议
参见: https://yoursunny.com/study/IS409/ScoreBoard.htm https://wiki.wireshark.org/LuaAPI/TreeItem http ...
- cocos2dx的lua绑定
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...
- Lua学习系列(二)
资源整理: 风云老师博客: http://blog.codingnow.com/eo/luaoeeeaeau/ 知乎: https://www.zhihu.com/question/20736660 ...
- lua虚拟机概述
何为虚拟机 用于模拟计算机运行的程序.是个中间层,它处于脚本语言和硬件之间的一个程序.每一门脚本语言都会有自己定义的opcode("操作码"),可以理解为这门程序自己定义的&quo ...
- Lua 5.3 参考手册
转自:http://www.runoob.com/manual/lua53doc/manual.html 1 – 简介 Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设 ...
- Lua的工具资源3
[LuaSrcDiet] (5.0.2) - 通过删除不必要的空白和注释缩减Lua文件的大小. [LuaProfiler] (5.0) - 一个用来查找Lua应用瓶颈的工具time profiler ...
- 抓包软件PowerSniff开发计划
目前抓包的工具不顺手: (1)smartsniff, minisniffer不支持插件 (2)wireshark,omnipeek插件过于复杂,还有不是要装驱动就是admin权限 打算重写一个,第一个 ...
- Redis资料汇总专题
1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis ...
随机推荐
- Could not process inbound connection: Client [/rostopic_18439_1555659423249] wants topic , ROS md5sums do not match
报错如下: [WARN] [WallTime: ', 'md5sum': '0d0edf749cdde9f3dc5639668f40e90b', 'topic': '/bp_update_feedba ...
- Java GC机制
GC机制的基本算法是:分代收集,这个不用赘述.下面阐述每个分代的收集方法. 年轻代: 事实上,在上一节,已经介绍了新生代的主要垃圾回收方法,在新生代中,使用“停止-复制”算法进行清理,将新生代内存分为 ...
- 与vnpy相关的有用博客网址
https://blog.csdn.net/Trader_Python/article/list/1
- RMAN 的优缺点及RMAN 备份及恢复步骤
一. RMAN 备份的一些优点和OS命令备份方式相比,使用RMAN的优点 1 备份执行期间不需要人工干预,因此减少了误操作的机会:2 可以有效的将备份和恢复结合起来:3 支持除逻辑备份以外的所有 ...
- Web 安全漏洞之 XSS 攻击
什么是 XSS 攻击 XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.XSS是一种经常出现在 Web 应用程序中的计算机安全漏洞,是由于 ...
- MySQL字符串列与整数比较
一.问题说明 为了简便在存储时我们经常将整型字段也以字符串形式存储(如id值),但在筛选比较时就需要将该字段转为数值类型. 二.处理办法 2.1 使用cast函数进行类型转换 cast函数格式---- ...
- ThinkPHP5模型操作中的自动时间戳总结
ThinkPHP5中提供了非常优秀的自动时间戳功能.使用起来非常方便. 但是官网手册中的说明还是不是很详尽,因此整理再次,以方便后续使用时查阅. 一.一般情况下的自动填充create_time,upd ...
- oracel sql分组求和过滤条件
- SpringMvc开发报找不到springmvc配置文件
param-name标签属性值必须为contextConfigLocation
- Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载
效果图: 1.activity_main.xml 描述:定义了六个按钮 <?xml version="1.0" encoding="utf-8"?> ...