跳到主要内容

delay

简介

延迟触发函数调用的pkg。

类似一个批量超时定时器,可以触发一个未来时间点内一系列函数在既定相对时间执行。

组件接口

delay.gs

函数原型函数作用
void init_delay(float max_duration, float frame_update_interval)初始化延迟时间和延迟精度。根据延迟精度将延迟时间划分为若干轮询时间片,同一个轮询时间片内的事件执行的先后顺序跟注册顺序有关。
void set_delay_speed(int speed)设置延迟倍速,按speed设置的倍速推进延迟事件
void delay_invoke(float time, function func)设置在未来某个时间要触发的事件(函数)

样例

import pkg.delay;

public void sample()
{
object d = new_object(delay, this_domain());

d.init_delay(100, 0.1, 0.1);
d.set_delay_speed(3);
int counter = 0;
for(int i = 10 upto 20)
{
d.delay_invoke((float)i/10,
[&counter] () {
printf("invoked %d.\n", i);
counter ++;
}
);
}

sync_object evt = sync_object.create_event("wait_delay");
d.delay_invoke(2.5, (){
evt.raise();
});

evt.wait();
assert(counter == 11);
d.close();
}

sample();