1. #timer thread
  2.  
  3. #-------以下:用户禁止访问-------
  4. #定时器属性
  5. var TimerHash =
  6. {
  7. #定时间隔
  8. time : ,
  9. #触发函数
  10. trigFunc : nil,
  11. #是否取消
  12. cancel : ,
  13.  
  14. new : func (_time, _trigFunc, _cancel)
  15. {
  16. return { parents:[TimerHash],
  17. time : _time,
  18. trigFunc : _trigFunc,
  19. cancel : _cancel
  20. };
  21. }
  22. };
  23.  
  24. #存放所有的定时器
  25. var TimerVec = [];
  26.  
  27. #定时器工作线程启动函数
  28. var thread_timer_id = ;
  29.  
  30. var thread_func = func
  31. {
  32. var id = thread_timer_id;
  33.  
  34. var time1 = systime();
  35. var time2 = time1;
  36.  
  37. while(!TimerVec[id].cancel)
  38. {
  39. time2 = systime();
  40.  
  41. if ((time2 - time1) >= TimerVec[id].time)
  42. {
  43. time1 = time2;
  44.  
  45. TimerVec[id].trigFunc();
  46. }
  47. }
  48. };
  49.  
  50. #退出FlightGear时,停止所有的定时器
  51. var stop_all_timer = func
  52. {
  53. for (var i = ; i < size(TimerVec); i += )
  54. {
  55. TimerVec[i].cancel = ;
  56. }
  57. };
  58.  
  59. _setlistener("/sim/signals/exit", stop_all_timer);
  60. #-------以上:用户禁止访问-------
  61.  
  62. #-------提供给用户使用的定时器类-------
  63. var TimerClass =
  64. {
  65. #-------以下:用户禁止访问-------
  66. id : ,
  67. #-------以上:用户禁止访问-------
  68.  
  69. new : func (_time, _trigFunc)
  70. {
  71. var tm = TimerHash.new(_time, _trigFunc, );
  72. append(TimerVec, tm);
  73.  
  74. return { parents : [TimerClass],
  75. id : size(TimerVec) - };
  76. },
  77.  
  78. start : func
  79. {
  80. TimerVec[me.id].cancel = ;
  81.  
  82. thread_timer_id = me.id;
  83. thread.newthread(thread_func);
  84. },
  85.  
  86. stop : func
  87. {
  88. TimerVec[me.id].cancel = ;
  89. }
  90. };

NASAL脚本实现的高精度定时器的更多相关文章

  1. Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

    转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...

  2. 高精度定时器实现 z

    1背景Permalink .NET Framework 提供了四种定时器,然而其精度都不高(一般情况下 15ms 左右),难以满足一些场景下的需求. 在进行媒体播放.绘制动画.性能分析以及和硬件交互时 ...

  3. Linux下的hrtimer高精度定时器【转】

    转自:http://blog.csdn.net/waverider2012/article/details/38305785 hrtimer高精度定时器的interval由ktime_set(cons ...

  4. 使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】

    关键词:Android  linux hrtimer 蜂鸣器  等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418  作 ...

  5. linux下jiffies定时器和hrtimer高精度定时器【转】

    本文转载自:http://blog.csdn.net/dosculler/article/details/7932315 一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jif ...

  6. Linux 高精度定时器hrtimer 使用示例【转】

    本文转载自:http://blog.csdn.net/dean_gdp/article/details/25481225 hrtimer的基本操作 Linux的传统定时器通过时间轮算法实现(timer ...

  7. linux 高精度定时器例子

    //author:DriverMonkey //phone:13410905075 //mail:bookworepeng@Hotmail.com //qq:196568501 #include &l ...

  8. hrtimer高精度定时器的简单使用【学习笔记】

    #include <linux/module.h> #include <linux/kernel.h> #include <linux/hrtimer.h> #in ...

  9. C#中自定义高精度Timer定时器的实例教程

    Timer 用于以用户定义的事件间隔触发事件.Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理.它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用 ...

随机推荐

  1. CSS3的基础用法

    CSS3的现状:1.浏览器支持程度差,需要添加私有前缀 2.移动端支持优于PC端 3.不断改进中 4.应用相对广泛 在CSS3中增加新增了许多灵活查找元素的方法,极大的提高了查找元素的效率和精准度.C ...

  2. System.Data.SqlClient.SqlError:无法对过程'XXX' 执行 删除,因为它正用于复制。消息 3724,级别 16

    遇到这么一个错误,想对[northwindcs]这个数据库搭建复制,从B服务器发布订阅到C服务器,采用备份还原进行初始化,但是在数据库还原时,报无法对过程‘XXX’执行删除,因为它正用于复制.表面上一 ...

  3. .net(C#)在vs2010版本下的MVC如何配置才能切换静态页面(html)

    由于vs2010用的人比较多,虽然建mvc项目vs2010可能还不成熟,但鉴于每个人的成长有限,每个地方的资源有限,最主要的是为了解决问题,所以先不管那么多了. 用vs2010为公司网站建站,要求js ...

  4. ios视图frame和bounds的对比

    bounds坐标:自己定义的坐标系统,setbound指明了本视图左上角在该坐标系统中的坐标,   默认值(0,0) frame坐标:  子视图左上角在父视图坐标系统(bounds坐标系统)中的坐标, ...

  5. nginx 启动、重启、关闭

    一.启动 cd usr/local/nginx/sbin./nginx 二.重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径或者使用cd /usr/local/nginx/s ...

  6. Unity3d调用iOS陀螺仪

    How to write gyroscope controller with Unity3d http://blog.heyworks.com/how-to-write-gyroscope-contr ...

  7. Linux Shell 学习总结

    1. -bash: ./dd.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录 当出现上面这问题的时候,首先看你的.profile 里面是否配置对了,一般配置为: ...

  8. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  9. 关于/usr/local/lib/libz.a(zutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC解决办法

    具体报错截图如下: 解决方法: 题外话,我对makefill cmake也是一窍不通因此本人也是不想去积极的解决这个问题,但是当你求助无缘的时候你才会静心去思考.读到这句话的时候也许你已经发现了问题所 ...

  10. window下关闭nginx

    nginx -s stop taskkill /F /IM nginx.exe > nul