lua实现sleep
来源:互联网 发布:js如何创建数组 编辑:程序博客网 时间:2024/05/16 11:25
解决方案
1.在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源
代码:
cpu消耗结果:
2.调用系统命令
3.借助posix库
代码:
4.借助socket的select
代码:
同样超级的简单,具体的cpu消耗就不贴了,方法很多。
1.在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源
代码:
[xluren@test time_sleep]$ cat demo.lua local old_time=os.time()function demo() new_time=os.time() while true do if new_time - old_time >100 then break end end end demo() [xluren@test time_sleep]$
cpu消耗结果:
[xluren@test ~]$ pidstat -p 30993 1 60Linux 2.6.32-220.el6.x86_64 (test.145) 12/07/2014 _x86_64_(1 CPU)03:17:37 PM PID %usr %system %guest %CPU CPU Command03:17:38 PM 30993 97.00 1.00 0.00 98.00 0 lua03:17:39 PM 30993 97.98 0.00 0.00 97.98 0 lua03:17:40 PM 30993 98.02 0.00 0.00 98.02 0 lua03:17:41 PM 30993 99.00 1.00 0.00 100.00 0 lua03:17:42 PM 30993 97.00 1.00 0.00 98.00 0 lua^C[xluren@test ~]$ ps axf |grep 30993 30993 pts/0 R+ 0:38 | \_ lua demo.lua31039 pts/2 S+ 0:00 \_ grep 30993[xluren@test ~]$如此的耗费cpu,所以这种方式 我们直接pass了
2.调用系统命令
代码:
[xluren@test time_sleep]$ vim demo_os_cmd.lua [xluren@test time_sleep]$ lua !$lua demo_os_cmd.lua^C[xluren@test time_sleep]$ cat demo_os_cmd.lua function demo() os.execute("sleep 100")end demo() [xluren@test time_sleep]$cpu消耗结果:
[xluren@test ~]$ ps axf |grep demo_os_cmd.lua31144 pts/0 S+ 0:00 | \_ lua demo_os_cmd.lua31158 pts/2 S+ 0:00 \_ grep demo_os_cmd.lua[xluren@test ~]$ pidstat -p 31144 1 60Linux 2.6.32-220.el6.x86_64 (test.145) 12/07/2014 _x86_64_(1 CPU)03:20:54 PM PID %usr %system %guest %CPU CPU Command03:20:55 PM 31144 0.00 0.00 0.00 0.00 0 lua03:20:56 PM 31144 0.00 0.00 0.00 0.00 0 lua03:20:57 PM 31144 0.00 0.00 0.00 0.00 0 lua03:20:58 PM 31144 0.00 0.00 0.00 0.00 0 lua03:20:59 PM 31144 0.00 0.00 0.00 0.00 0 lua03:21:00 PM 31144 0.00 0.00 0.00 0.00 0 lua^C[xluren@test ~]$简单,方便,几乎不耗费cpu,可以考虑
3.借助posix库
代码:
[xluren@test time_sleep]$ cat demo_posix.lua require("posix")function demo() posix.sleep(100)end demo() [xluren@test time_sleep]$cpu消耗结果:
[xluren@test ~]$ ps axf |grep demo_posix31327 pts/0 S+ 0:00 | \_ lua demo_posix.lua31352 pts/2 S+ 0:00 \_ grep demo_posix[xluren@test ~]$ pidstat -p 31327 1 60Linux 2.6.32-220.el6.x86_64 (test.145) 12/07/2014 _x86_64_(1 CPU)03:25:06 PM PID %usr %system %guest %CPU CPU Command03:25:07 PM 31327 0.00 0.00 0.00 0.00 0 lua03:25:08 PM 31327 0.00 0.00 0.00 0.00 0 lua03:25:09 PM 31327 0.00 0.00 0.00 0.00 0 lua03:25:10 PM 31327 0.00 0.00 0.00 0.00 0 lua^C[xluren@test ~]$也非常的不错,但是需要安装lua-posix软件包。
4.借助socket的select
代码:
[xluren@test time_sleep]$ cat demo_socket.lua require("socket")function demo() socket.select(nil,nil,100)end demo() [xluren@test time_sleep]$
同样超级的简单,具体的cpu消耗就不贴了,方法很多。
0 0
- lua实现sleep
- lua实现利用timer实现 sleep:
- lua sleep
- Lua中实现sleep函数功能的4种方法
- LUA Sleep Function
- Lua的sleep函数
- Lua的sleep函数
- Sleep实现
- c or lua sleep ms
- Lua的sleep函数(转)
- lua,使用sleep的各种方法
- [lua]写个简单的Lua拓展-sleep函数
- 批处理实现sleep
- sleep()的实现原理
- javascript 实现sleep效果
- Javascript实现sleep效果
- peoplecode实现sleep功能
- peoplecode实现sleep功能
- Codeforces 6C. Alice, Bob and Chocolate
- 【LeetCode】Combinations 解题报告
- android SlidingMenu sample的j简单写法
- C++如何合并若干个vector
- C++多态的实现原理
- lua实现sleep
- iOS_版本用户更新
- Android手机耗电深度解析:3G耗电是WiFi四倍
- 快速排序的非递归实现
- C++ 关键字inline详细介绍
- 数据结构 hashtable C++实现 链式
- 数据结构hashtable C++实现 非链式
- 数据结构二叉堆C++实现 最小堆
- FusionCharts:横坐标标签较长时显示方式