NASAL脚本实现的高精度定时器
#timer thread #-------以下:用户禁止访问-------
#定时器属性
var TimerHash =
{
#定时间隔
time : ,
#触发函数
trigFunc : nil,
#是否取消
cancel : , new : func (_time, _trigFunc, _cancel)
{
return { parents:[TimerHash],
time : _time,
trigFunc : _trigFunc,
cancel : _cancel
};
}
}; #存放所有的定时器
var TimerVec = []; #定时器工作线程启动函数
var thread_timer_id = ; var thread_func = func
{
var id = thread_timer_id; var time1 = systime();
var time2 = time1; while(!TimerVec[id].cancel)
{
time2 = systime(); if ((time2 - time1) >= TimerVec[id].time)
{
time1 = time2; TimerVec[id].trigFunc();
}
}
}; #退出FlightGear时,停止所有的定时器
var stop_all_timer = func
{
for (var i = ; i < size(TimerVec); i += )
{
TimerVec[i].cancel = ;
}
}; _setlistener("/sim/signals/exit", stop_all_timer);
#-------以上:用户禁止访问------- #-------提供给用户使用的定时器类-------
var TimerClass =
{
#-------以下:用户禁止访问-------
id : ,
#-------以上:用户禁止访问------- new : func (_time, _trigFunc)
{
var tm = TimerHash.new(_time, _trigFunc, );
append(TimerVec, tm); return { parents : [TimerClass],
id : size(TimerVec) - };
}, start : func
{
TimerVec[me.id].cancel = ; thread_timer_id = me.id;
thread.newthread(thread_func);
}, stop : func
{
TimerVec[me.id].cancel = ;
}
};
NASAL脚本实现的高精度定时器的更多相关文章
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...
- 高精度定时器实现 z
1背景Permalink .NET Framework 提供了四种定时器,然而其精度都不高(一般情况下 15ms 左右),难以满足一些场景下的需求. 在进行媒体播放.绘制动画.性能分析以及和硬件交互时 ...
- Linux下的hrtimer高精度定时器【转】
转自:http://blog.csdn.net/waverider2012/article/details/38305785 hrtimer高精度定时器的interval由ktime_set(cons ...
- 使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】
关键词:Android linux hrtimer 蜂鸣器 等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418 作 ...
- linux下jiffies定时器和hrtimer高精度定时器【转】
本文转载自:http://blog.csdn.net/dosculler/article/details/7932315 一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jif ...
- Linux 高精度定时器hrtimer 使用示例【转】
本文转载自:http://blog.csdn.net/dean_gdp/article/details/25481225 hrtimer的基本操作 Linux的传统定时器通过时间轮算法实现(timer ...
- linux 高精度定时器例子
//author:DriverMonkey //phone:13410905075 //mail:bookworepeng@Hotmail.com //qq:196568501 #include &l ...
- hrtimer高精度定时器的简单使用【学习笔记】
#include <linux/module.h> #include <linux/kernel.h> #include <linux/hrtimer.h> #in ...
- C#中自定义高精度Timer定时器的实例教程
Timer 用于以用户定义的事件间隔触发事件.Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理.它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用 ...
随机推荐
- Jquery实现账单全部选中和部分选中管理
在做购物车系统是我们往往会遇到这样一个需求,在点击全选框时我们要将全部的单个账单都选中;在单个选中账单时,如果账单全部被选中则需要全选框处于选中状态,若没有全部被选中则全选框处于没选中状态; 以下是在 ...
- DFA敏感词过滤
import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.util.ArrayList; ...
- jsexcel导出插件
ExcelTable.js /* * author:wenluanlai */ (function ($) { Date.prototype.Format = function (fmt) { var ...
- JavaScript中的splice方法
splice方法根据传入的不同参数可分别实现删除和插入操作 使用splice(pra1,pra2,pra3)方法,需要为其提供如下参数: 1.pra1为其起始索引(即希望开始添加元素的地方) 2.pr ...
- Code First Migrations 数据迁移小记
用了codefirst后一个很大的问题就是代码中的属性字段与数据库中表的同步问题,删掉数据库重新生成当然可以解决,不过数据就丢失了(当然通过代码中初始化数据库添加数据也可以解决,初始化的任务可以通过重 ...
- VC界面最前端显示
//显示在最前端 m_pMainWnd->SetWindowPos(&CWnd::wndTopMost, 0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); if (m_pM ...
- Objective-C( Foundation框架 一 NSFileManager)
NSFileManager 用来管理文件系统的 它可以用于常见的文件,文件夹操作(拷贝,剪切,创建) NSFileManager使用了单例模式(Singleton) 使用defaultManager可 ...
- oracle initialization or shutdown in progress解决方法
[解决方法] SQL> connect sys/hope as sysdba 已连接. SQL> shutdown normal ORA-01109: 数据库未打开 已经卸载数 ...
- guava学习--SettableFuture
转载:https://my.oschina.net/realfighter/blog/349931 翻开SettableFuture的源码,我们看到SettableFuture继承了AbstractF ...
- java Resource
ClassPathResource: String resource = ""; //相对路径 Resource resource = new ClassPathResource( ...