2016-08-03 ruki
tbox提供了两种定时器: 一种是基于最小堆的高精度定时器,精确到ms级别,但是时间复杂度在O(logn) 还有一种就是基于timing-wheel时间轮算法的低精度定时器,时间复杂度仅为O(1),实常数级别的,相当的快。 这个定时器是参考了linux内核的timer算法实现,不过linux那个比较通用,实现复杂,tbox中为了考虑精简性和低资源,对其算法做了精简 使得其资源占用更小,效率更高,但是使用场景上会有些限制,可以根据自己的实际情况,来判断使用需要用这个定时器来优化性能,还是使用高精度版本。 ltimer低精度定时器,提供了几种精度模式: TB_LTIMER_TICK_100MS:100毫秒级别 TB_LTIM 继续阅读 »
2016-08-03 ruki
tbox内部提供了两种定时器实现:timer和ltimer timer: 高精度版本,采用最小堆实现,复杂度是:O(log(n)) ltimer: 低精度版本,采用linux内核中的timing-wheel算法,复杂度是:O(1) 这里主要讲解下,如何使用timer实现高精度的定时器任务,精确到ms级别,对于低精度的ltimer,可以参考:低精度定时器的使用 下面先给个简单的例子来说明: ```c /* 定义一个定时器任务处理函数 * * @param killed 表示当前任务是否被tb_timer_task_kill强行kill掉的 * @param priv 投递任务时传入的用户自定义数据指针 */ stat 继续阅读 »
2016-04-01 AllanChan
为什么 UIScrollView 的滚动会导致 NSTimer 失效? 定时器里面有个runoop mode,一般定时器是运行在Defaultmode上但是如果滑动了这个页面,主线程runloop会转到UITrackingRunLoopMode中,这时候就不能处理定时器了,造成定时器失效,原因就是runroop mode选错了。 解决办法有2个: 1:更改mode为NSRunLoopCommonModes(无论runloop运行在哪个mode,都能运行) 2:切换到主线程来更新UI界面的刷新 继续阅读 »
2016-10-12 曹强
用策略模式实现缓动动画 需求:让小球以各种缓动效果在页面中运动 动画开始前需要记录的: 小球所在原始位置 小球移动的目标位置 动画开始时的时间点 小球运动的时间点 之后,用setInterval创建一个定时器,定时器每19秒循环一次。 //缓动算法,此算法移植于flash var tween = { //t:动画已消耗的时间,b:小球原始位置,c:小球目标位置,d:动画持续时间 linear: function(t, b, c, d) { return c*t/d + b; }, reseIn: function(t, b, c, d) { ret 继续阅读 »
2016-02-25 ruki
新特性 增加smallest参数配置选项,实现一键配置最小化编译,禁用所有扩展模块和依赖库 增加进程创建和控制接口 改进 增强环境变量设置接口 修改xmake.lua支持最新版xmake v2.x, 简化编译配置 Bugs修复 修复ltimer定时器不准问题 修复asio部分内存泄露问题 修复asio/httpd在linux下keepalive模式,响应很慢问题 修复windows下路径处理的一些bug 继续阅读 »