关闭

Lua中实现sleep函数功能的4种方法

标签: Luasleep
2842人阅读 评论(0) 收藏 举报
分类:
这篇文章主要介绍了Lua中实现sleep函数功能的4种方法,本文讲解了在一个死循环中设置一个跳出条件方法、调用系统的sleep函数法、Windows下ping命令法、socket库中select函数法4种方法,需要的朋友可以参考下

一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下:

方法1

复制代码代码如下:

--在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用哦
function sleep(n)
   local t0 = os.clock()
   while os.clock() - t0 <= n do end
end

方法2
复制代码代码如下:

--调用系统的sleep函数,不消耗CPU,但是Windows系统中没有内置这个命令(如果你又安装Cygwin神马的也行)。推荐在Linux系统中使用该方法
function sleep(n)
   os.execute("sleep " .. n)
end

方法3
复制代码代码如下:

--虽然Windows没有内置sleep命令,但是我们可以稍微利用下ping命令的性质
function sleep(n)
   if n > 0 then os.execute("ping -n " .. tonumber(n + 1) .. " localhost > NUL") end
end

方法4
复制代码代码如下:

--使用socket库中select函数,可以传递0.1给n,使得休眠的时间精度达到毫秒级别。
‍require("socket")
function sleep(n)
   socket.select(nil, nil, n)
end
0
0
查看评论

lua,使用sleep的各种方法

转自:http://lua-users.org/wiki/SleepFunction Sleep Function A common need is to pause (sleep) a program for a certain number of seconds, pre...
  • zhukangle
  • zhukangle
  • 2017-06-12 11:10
  • 851

[lua]写个简单的Lua拓展-sleep函数

这几天在做一个小项目,其中用到了一些基本的API, 例如sleep,获取当前目录等等,lua标准库中没有提供这些接口,虽然所第三方库中也都有实现,但是要用的就那么几个函数,在一个嵌入式系统中安装那么多第三方库有点浪费资源,于是@胜利哥 写了一个socket的C实现,然后给我用。我试着把其他几个函数也...
  • lzz957748332
  • lzz957748332
  • 2015-03-23 22:12
  • 2191

LUA Sleep Function

转自:http://lua-users.org/wiki/SleepFunctionA common need is to pause (sleep) a program for a certain number of seconds, preferably without busy waiting...
  • dragoncheng
  • dragoncheng
  • 2010-05-11 16:30
  • 3812

lua实现sleep

解决方案 1.在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源 代码: [xluren@test time_sleep]$ cat demo.lua local old_time=os.time() function demo() new_time=os.time...
  • xluren
  • xluren
  • 2014-12-07 15:39
  • 991

Lua语言实现简单的多线程模型

lua本身是不支持真正的多线程的,但是lua提供了相应的机制来实现多线程。lua执行在一个lua环境中内部叫lua_State。如果我们创建多个lua_State,并且创建一一对应的线程来启动它就基本实现了一个封闭的多线程环境。但是这种环境下lua代码之间没有任何联系,不能共享数据,不能进行同步。因...
  • john_crash
  • john_crash
  • 2015-10-29 14:33
  • 8573

cocos2d-x 对一个普通方法进行延时执行操作

CCDelayTime* delayTime = CCDelayTime::create(0.7f);                 CCCallFunc *callFunND = CCCallFunc::c...
  • CHL123456789
  • CHL123456789
  • 2014-05-30 14:50
  • 1443

Cocos2d-x 3.0 lua中的定时器

在cocos2d-x lua脚本中,原来引擎中的那些添加定时器的函数(schedule)没有自动绑定过来,而是引擎团队重新定义的,这里做个汇总, 在 引擎根目录/cocos/scripting/lua-bindings/script 的extern.lua文件中定义了 schedule 和 per...
  • hzl877243276
  • hzl877243276
  • 2014-08-10 11:29
  • 11764

Cocos2d-x 中的Sleep 和USleep

Cocos2d-x跨平台,但是这个Sleep延时需要区分平台 (不知道是不是我自己没有找到),还是用宏来区分,用宏替代吧。 文件CCLittleHelper.h ,以后写一些公用小函数到里面,作为小助手。 #pragma once /*Sleep这个东西*/ #ifdef WIN32...
  • cp790621656
  • cp790621656
  • 2013-09-09 00:17
  • 7645

Lua封装延时执行函数

延时执行函数 function delayTimeGuideEvent( target, func, times ) -- 延迟时间执行函数 local delaytime = 1 if times then delaytime = times end getRoo...
  • zhenyu5211314
  • zhenyu5211314
  • 2015-12-30 23:07
  • 4208

LUA的延时调用功能

-- 延时 0.2 关闭      local schedulerEntry = nil     local    scheduler = cc.Director:getInstance():getScheduler...
  • yejian2011
  • yejian2011
  • 2014-11-16 15:06
  • 1364
    个人资料
    • 访问:211746次
    • 积分:2790
    • 等级:
    • 排名:第15206名
    • 原创:137篇
    • 转载:27篇
    • 译文:0篇
    • 评论:25条
    最新评论