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 消息泵,而且总是在同一个线程中操作,或者将调用 ...
随机推荐
- duilib的caption上的Edit无法激活
当窗口设置标题栏时,鼠标等控件可以相应,edit无法响应. 主要和WindowImplBase::OnNcHitTest 虚函数有关. LRESULT WindowImplBase::OnNcHitT ...
- malloc error:初始值设定元素不是常量
#include <stdio.h> #include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout ...
- 【转】 C++的精髓——虚函数
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原 ...
- centos7装机和初步运维
1.装机-制作U盘启动盘 CentOS7是一个比较新的版本.在服务器领域用得比较多.因为前安装软件可能没有Ubuntu那样方便,所以桌面领域好像不是很多. https://www.centos.org ...
- 了解真实的『REM』手机屏幕适配
rem 作为一个低调的长度单位,由于手机端网页的兴起,在屏幕适配中得到重用.使用 rem 前端开发者可以很方便的在各种屏幕尺寸下,通过等比缩放的方式达到设计图要求的效果. rem 的官方定义『The ...
- C # 数据绑定(1)——将DataTabel的data添加ListView
文/嶽永鹏 目标界面: 功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录. UI XAML 代码 <Grid Margin="5"> < ...
- lex中yyrestart()的使用
使用lex&yacc时,如果文件有错,parse停止. "每次调用yyparse(),语法分析器会忘记上次分析可能拥有的任何状态而重新开始分析.这不像lex产生的词法分析器的yyle ...
- oracle基础学习
一.创建数据库用户 create user myaccount identified by mypassword;(my+account表示 账号,my+password表示 密码) 二.授予用户权限 ...
- Linux系统值得一看的学习方法及路线图
网络是一个很神奇的东西,现代人的生活离不开网络,网络已深入人们的工作,生活,娱乐等方方面面.网络之所以无处不在,是因为它提供了诸多的网络服务,所以网络服务是网络的灵魂. 互联网上的各种网络服务是架构在 ...
- 【图像处理】【SEED-VPM】1.注意点
1. 新装系统要启动NFX 每次虚拟机复位要执行以下命令 /usr/sbin/exportfs -av /sbin/service nfs restart —————————————————————— ...